• 接口测试


    脚本

    主程序

    #!/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.

    一切代码都是为了生活,一切生活都是调剂
  • 相关阅读:
    NXOPEN二次开发CAM Operation转OperationBuilder对加工操作修改一些进给速度参数
    NX二次开发MFC对话框自己重绘Button控件(提升美观度)重写DrawItem方法(已完结)
    NX二次开发使用SendMessage给NX窗口发送消息最小化
    NX二次开发调内部函数将对象设置为全局选择(设为高亮选中状态,在选择列表里)
    NX二次开发UFUN输入一个点,距离,矢量方向,获得另外一个点的坐标UF_VEC3_affine_comb
    NX二次开发UFUN获得NX的窗口句柄UF_UI_get_default_parent
    vuetiger机抽奖组件(转)
    浅谈module.exports与exports,export与export default的区别
    解决echarts控制台警告:There is a chart instance already initialize on the dom
    maven版本管理
  • 原文地址:https://www.cnblogs.com/argor/p/10108855.html
Copyright © 2020-2023  润新知