接口测试

脚本

主程序

#!/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
View Code

配置文件

#!/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}
View Code

函数文件

#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        
}
View Code

使用说明:

  1. 修改:http://Address:Port/Project/RequestMappering,修改“地址”、“端口”、“工程名”、“接口”为合适的信息;
  2. 部署:按照主程序中调用时的路径,部署“配置文件”、“函数文件”;或者修改主程序内容;
  3. 执行:为主程序取名(ti),赋予执行权限;
  4. 主目录:配置文件中的目录 $WORKSPACE 表示将要测试的json文件放置的主目录;
  5. 接口目录:接口目录位于主目录下,目录名与接口同名;
  6. 测试文件:测试文件针对性位于接口目录下,文件名以“.json”结尾有效(可以修改配置文件 $SUFFIX,按需更改);
  7. 测试结果:保存在执行主程序时的当前目录,每次执行会新建当前时间的目录;把接口、及其测试结果依次保存。

功能介绍(编写背景):

  1. 程序开发中,测试接口需要;
  2. 公司之间合作开发,需要把测试的过程保留下来(测试文件、测试结果);
  3. 参数提交全部是“json”格式;
  4. 可能需要多次测试,……。

技巧介绍:

  • 测试时,通过测试的测试文件,可以修改后缀保留而不影响测试结果;
  • 测试完成后,需要一次性获取所有测试结果,可以在配置文件修改 $SUFFIX 变量,一次性完成所有接口的所有测试项目;
  • 主程序中,手工切换可以把每次执行的内容保存到当前目录。

ti.

一切代码都是为了生活,一切生活都是调剂
原文地址:https://www.cnblogs.com/argor/p/10108855.html