脚本
主程序
#!/bin/bash . /etc/ti/ti.conf . /etc/ti/ti.fun #cat YZXX/eg-1-basic.json | curl -H "Content-Type:application/json" -X POST -d @- http://address:port/project/REQUESTMAPPING # List all file in Workspace. # Create current output directory. [ -d ${OUTPUTDIR} ] && rm -fvr ${OUTPUTDIR} [ ! -d ${OUTPUTDIR} ] && mkdir -pv ${OUTPUTDIR} #getInterfaceName | tee ${LOGINFO}.log getInterfaceName
配置文件
#!/bin/bash # Input information. WORKSPACE=/opt/home/Curl-Workspace SUFFIX=".json" PROTOCOL="http://" URI="Address:Port/Project/" URL=${PROTOCOL}${URI} # Output information. LOGINFO=`date +%F_%H%M` RESULTOUTDIR=${LOGINFO} OUTPUTDIR=./${RESULTOUTDIR}
函数文件
#cat YZXX/eg-1-basic.json | curl -H "Content-Type:application/json" -X POST -d @- http://Address:Port/Project/RequestMappering # Input: Direcory # Output: SubDirectory traverseDirectoryFindFile() { ls -1 ${1} } getInterfaceName() { for d in $(traverseDirectoryFindFile ${WORKSPACE}) do # Traversing the directory. if [ -d ${WORKSPACE}/$d ]; then # Echo interface name. echo -e "######################### ## Check Informations. ## #########################" echo -en "Interface: " echo $d # Get file name. getFilename fi done } getFilename() { # Get the file that named end with ".json". #for f in $(traverseDirectoryFindFile ${WORKSPACE}/${d}) for f in $(traverseDirectoryFindFile ${WORKSPACE}/${d} | grep "${SUFFIX}$") do echo -e " Json file: $f" FILE=${WORKSPACE}/${d}/${f} INTERFACE=${d} #echo -e " Json file name: "$FILE echo -e " InterfaceName: "$INTERFACE echo -e " URL: "$URL${INTERFACE} # Create subdirectories. CURDIR="" && CURDIR=${OUTPUTDIR}/${INTERFACE} CreateInfo=`mkdir -pv ${CURDIR}` echo -e " ${CreateInfo}" RESFILE=${CURDIR}/${f}.txt #RESFILE=`echo ${RESFILE} | sed 's/.json/.txt'` echo -e " Result: ${RESFILE}" # Curl ... echo -e " ****** Return ******" #cat $FILE | curl -H "Content-Type:application/json" -X POST -d @- $URL${INTERFACE} 2>/dev/null | tee ${RESFILE} cat $FILE | curl -# -H "Content-Type:application/json" -X POST -d @- $URL${INTERFACE} 2>/dev/null | tee ${RESFILE} echo -e " ****** Over ****** " done }
使用说明:
- 修改:http://Address:Port/Project/RequestMappering,修改“地址”、“端口”、“工程名”、“接口”为合适的信息;
- 部署:按照主程序中调用时的路径,部署“配置文件”、“函数文件”;或者修改主程序内容;
- 执行:为主程序取名(ti),赋予执行权限;
- 主目录:配置文件中的目录 $WORKSPACE 表示将要测试的json文件放置的主目录;
- 接口目录:接口目录位于主目录下,目录名与接口同名;
- 测试文件:测试文件针对性位于接口目录下,文件名以“.json”结尾有效(可以修改配置文件 $SUFFIX,按需更改);
- 测试结果:保存在执行主程序时的当前目录,每次执行会新建当前时间的目录;把接口、及其测试结果依次保存。
功能介绍(编写背景):
- 程序开发中,测试接口需要;
- 公司之间合作开发,需要把测试的过程保留下来(测试文件、测试结果);
- 参数提交全部是“json”格式;
- 可能需要多次测试,……。
技巧介绍:
- 测试时,通过测试的测试文件,可以修改后缀保留而不影响测试结果;
- 测试完成后,需要一次性获取所有测试结果,可以在配置文件修改 $SUFFIX 变量,一次性完成所有接口的所有测试项目;
- 主程序中,手工切换可以把每次执行的内容保存到当前目录。
ti.