脚本

主程序

#!/bin/bash
. /etc/ti/ti.conf
. /etc/ti/ti.fun #cat YZXX/eg--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--basic.json | curl -H "Content-Type:application/json" -X POST -d @- http://Address:Port/Project/RequestMappering

# Input: Direcory
# Output: SubDirectory
traverseDirectoryFindFile() {
ls - ${}
} getInterfaceName() {
for d in $(traverseDirectoryFindFile ${WORKSPACE})
do
# Traversing the directory.
if [ -d ${WORKSPACE}/$d ]; then
# Echo interface name.
echo -e "#########################\n## Check Informations. ##\n#########################"
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 "\tJson file: $f" FILE=${WORKSPACE}/${d}/${f}
INTERFACE=${d}
#echo -e "\tJson file name: "$FILE
echo -e "\tInterfaceName: "$INTERFACE
echo -e "\tURL: "$URL${INTERFACE} # Create subdirectories.
CURDIR="" && CURDIR=${OUTPUTDIR}/${INTERFACE}
CreateInfo=`mkdir -pv ${CURDIR}`
echo -e "\t${CreateInfo}"
RESFILE=${CURDIR}/${f}.txt
#RESFILE=`echo ${RESFILE} | sed 's/.json/.txt'`
echo -e "\tResult: ${RESFILE}" # Curl ...
echo -e "\n****** Return ******"
#cat $FILE | curl -H "Content-Type:application/json" -X POST -d @- $URL${INTERFACE} >/dev/null | tee ${RESFILE}
cat $FILE | curl -# -H "Content-Type:application/json" -X POST -d @- $URL${INTERFACE} >/dev/null | tee ${RESFILE} echo -e "\n\n****** Over ******\n\n"
done
}

使用说明:

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

功能介绍(编写背景):

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

技巧介绍:

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

ti.

接口测试 - ti的更多相关文章

  1. 从Fiddler抓包到Jmeter接口测试(简单的思路)

    备注:本文为博主的同事总结的文章,未经博主允许不得转载. Fiddler下载和配置安装 从网上下载fiddler的安装包即可,直接默认,一直点击下一步,直至安装完成. 安装完成后直接打开Fiddler ...

  2. C#进阶系列——WebApi 接口测试工具:WebApiTestClient

    前言:这两天在整WebApi的服务,由于调用方是Android客户端,Android开发人员也不懂C#语法,API里面的接口也不能直接给他们看,没办法,只有整个详细一点的文档呗.由于接口个数有点多,每 ...

  3. JAVA+Maven+TestNG搭建接口测试框架及实例

    1.配置JDK 见另一篇博客:http://www.cnblogs.com/testlurunxiu/p/5933912.html 2.安装Eclipse以及TestNG Eclipse下载地址:ht ...

  4. TI PDK3.0 qt 交叉编译环境设置

    上午剑锋给的方法,成功在qtcreator上面加入TI官方的qmake以及他的交叉编译器. 1. 步骤如下: 1. 我假设TI PDK3.0 安装目录为顶层目录. 2. 进入linux-devkit ...

  5. Web接口测试工具--Jmeter

    关于Jmeter性能测试工具不再过多介绍.如果你要学习软件性能测试,那么多少应该会对它有所耳闻. 强烈建议阅读官方文档学习:http://jmeter.apache.org/index.html 还有 ...

  6. Web接口测试工具---Poster与Postman

    工作当中有不少时间在编写和维护接口自动化测试用例.打算先整理一些接口相关工具的使用. 简单对接Web口测试的相关工具/技术做个划分. HTTP/SOAP协议接口的功能测试: 1.浏览器URL(GET请 ...

  7. HttpClient在HTTP协议接口测试中的使用

    TTP协议的接口测试中,使用到最多的就是GET请求与POST请求,其中POST请求有FORM参数提交请求与RAW请求,下面我将结合HttpClient来实现一下这三种形式: 一.GET请求: GET请 ...

  8. Jsoup做接口测试

    最早用Jsoup是有一个小的爬虫应用要写,发现Jsoup较HttpClient轻便多了,API也方便易懂,上手很快,对于response的Document解析的选择器用的是cssSelector(Jq ...

  9. java分享第十一天(接口测试)

     HTTP协议的接口测试中,使用到最多的就是GET请求与POST请求,其中POST请求有FORM参数提交请求与RAW请求( post请求时有一个选项是form-data,或者raw,使用raw可以请求 ...

随机推荐

  1. vue state

    vuex单一状态树,直接地定位任一特定的状态片段. vuex状态存储响应式,唯一store实例,从store中读取状态: 1.在计算属性中返回某个状态 2.在根实例中注册store选项,该 store ...

  2. Linux 开(关) ICMP 回应(防止被ping)

    临时生效的办法 关闭回应: [root@host ~]# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all // 客户端测试 ➜ ~ ping 0 ...

  3. js数据三大储存格式

    一.String格式  做为一个前端者 你第一手得到的数据都是字符串 二.数组格式 1.定义  var arr=[“张三”,”李四”,”王五”]; 数据通过索引去查找对应的元素   arr[3] 2. ...

  4. LG3211 [HNOI2011]XOR和路径

    题意 题目描述 给定一个无向连通图,其节点编号为 1 到 N,其边的权值为非负整数.试求出一条从 1 号节点到 N 号节点的路径,使得该路径上经过的边的权值的"XOR 和"最大.该 ...

  5. Linux----------rsync的介绍及安装使用

    目录 一.rsync的介绍 1.1rsync的特点 二.rsync命令 三.rsync的ssh认证协议 四.ssh协议方式使用方法 五.rsync协议方式使用方法即 (rsync + inotifu- ...

  6. GraphQL搭配MongoDB入门项目实战

    什么是GraphQL GraphQL 是一种面向 API 的查询语言.在互联网早期,需求都以 Web 为主,那时候数据和业务需求都不复杂,所以用 RestAPI 的方式完全可以满足需求.但是随着互联网 ...

  7. #Windows# 删除桌面删除不了文件夹

    问题:某个文件夹直接删除提示找不到. 解决方法:进入命令行,使用rmdir命令,删除成功. 具体命令为: cd /d D:\Desktop //使用/d可以改变驱动器,不用这个参数只能在同一个驱动器里 ...

  8. HBASE SHELL 命令使用

    HBASE SHELL命令的使用 在hbase shell客户端有许多的操作命令,今天回顾并且总结一二,希望和广大读者共同进步,并且悉心聆听你们的意见.在此的hbase版本是:HBase 1.2.0- ...

  9. BootStrap小知识随笔

    1.让label和input在一行显示 添加class "form-inline"就可以了.如 <table class="table table-bordered ...

  10. idea jdk版本问题

    问题描述: Information:Using javac 1.6.0_43 to compile java sourcesInformation:java: Errors occurred whil ...