## 环境
> 环境:httpclient+jsonpath+testng+ExtentReport(jdk8)
> demo中的用例以百度的api store为例(具体查看:[百度api商城](http://apistore.baidu.com/))
## 运行
1. IDE工具直接执行testng.xml(以testng形式运行)即可(ide工具需要先装好testng插件)。
2. maven执行:mvn test.
## 执行报告查看
1. testng.xml执行可视化报告:${workspace}/test-output/index.html
2. maven执行报告:${workspace}/target/test-output/index.html
## api-config.xml配置
> api请求根路径、请求头及初始化参数值可以在api-config上进行配置。
- rootUrl:
必须的配置,api的根路径,在调用api时用于拼接,配置后,会在自动添加到用例中的url的前缀中。
- headers:
非必须配置,配置后在调用api时会将对应的name:value值设置到所有请求的请求头中header-name:header-value。
- params:
非必须配置,公共参数,通常放置初始化配置数据,所有用例执行前,会将params下所有的param配置进行读取并存储到公共参数池中,在用例执行时,使用特定的关键字(${param_name})可以获取。具体使用请参考下面的高级用法。
- project_name:
项目名称,会在html报告中使用
```
<root>
<rootUrl>http://apis.baidu.com</rootUrl>
<headers>
<!-- 换成自己实际的值 -->
<header name="apikey" value="123456"></header>
</headers>
<params>
<param name="param1" value="value1"></param>
</params>
<project_name>接口自动化测试报告demo</project_name>
</root>
```
## api用例(case/api-data.xls)
> api请求用例具体数据。除表头外,一行代表一个api用例。执行时会依次从左到右,从上到下执行。
- run:
标记为‘Y’时,该行数据会被读取执行。
- description:
该用例描述,在报告中提现。
- method:
该api测试用例的请求方法(暂只支持get,post)。上传文件时请填写为upload
- url:
该api测试用例的请求路径。
- param:
请求方法为post时,body的内容(暂只支持json,不支持xml)。上传时请类似为:{"param1":"valu1","file":"__bodyfile(文件相对路径)"}
- verify:
对于api请求response数据的验证(可使用jsonPath进行校验)。校验多个使用“;”进行隔开。
- save:
使用jsonPath对response的数据进行提取存储。
- 说明:
1. 若配置文件(api-config.xml)中rootUrl为"http://apis.baidu.com" ,url的值为:“/apistore/aqiservice/citylist”,框架执行的时候会根据配置文件中rootUrl进行自动拼接为:http://apis.baidu.com/apistore/aqiservice/citylist 。
若填写url填写为http作为前缀的值如:“http://www.baidu.com/s?w=test” 将不会进行拼接。
2. 若verify填写值为:“$.errorCode=0;$.errorMessage=success”,则会校验返回值中$.errorCode的值为0,$.errorMessage的值为success,只要有一个校验错误,后面的其他校验项将停止校验。
3. 若save值为:“id=$.userId;age=$.age”,接口实际返回内容为:“{"username":"chenwx","userId":"1000","age":"18"}”,则接口执行完成后,会将公共参数id的值存储为1000,age存储为18。公共参数可在后面的用例中进行使用。具体使用方法见下方高级用法。
## 高级用法
> 测试用例excel表中可以使用‘${param_name}’占位符,在执行过程中如果判断含有占位符,则会将该值替换为公共参数里面的值,如果找不到将会报错。如:
```
//配置文件(api-config.xml)中params配置为:
<params>
<param name="apikey" value="123456"></param>
</params>
//A用例执行返回为
{"username":"chenwx","userId":"1000","age":"18"}
//A用例的save值为:
username=$.username;id=$.userId
//此时若B用例中param值填写为:
{"key":"apikey","userId":"${id}","username":"${username}"}
//实际执行时会替换为:
{"key":"123456","userId":"1000","username":"username"}
```
## 函数助手
> 测试用例excel表中可以使用‘__funcName(args)’占位符,在执行过程中如果判断含有该占位符,且funcName存在,则会执行相应的函数后进行替换。先支持函数如下:
- __random(param1,param2):随机生成一个定长的字符串(不含中文)。param1:长度(非必填,默认为6),param2:纯数字标识(非必填,默认为false)。
- __randomText(param1): 随机生成一个定长的字符串(含中文)。param1:长度(非必填,默认为6)
- __randomStrArr(param1,param2,param3):随机生成一个定长字符串数组。param1:数组长度(非必填,默认为1),param2:单个字符串长度(非必填,默认6),param3:纯数字标识(非必填,默认为false)。
- __date(param1): 生成执行该函数时的格式化字符串。param1为转换的格式,默认为‘yyyy-MM-dd’。
- __generateStrArrByStr(param1,param2):生成定长的字符串数组。param1:参数为数组长度 即生成参数个数,param2:字符串
- __sub(param,params...):减数。第一个参数作为减数,其他参数均作为被减数。
- __max(params...)获取所有参数的最大值。
- __plus(params...)将所有参数进行相加。//参数中其中有一个包含小数点将会返回带小数点的值
- __multi(params...)将所有参数相乘。
- __bodyfile():。
```
//若param中值为:
{"username":"__random(6,true)"}
//实际执行时,username的值会替换为长度为6的数字随机数如:
{"username":"653495"}
```
## 待优化
- 支持xml
- 支持auth
- 支持delete,put等方法
- 支持验证数据库
- 待加+++++
没有合适的资源?快使用搜索试试~ 我知道了~
接口自动化代码
共463个文件
xml:169个
json:131个
class:45个
需积分: 31 32 下载量 112 浏览量
2019-01-29
08:12:41
上传
评论 1
收藏 25.5MB RAR 举报
温馨提示
接口自动化代码:集成testng,mybatis,redis,用例层使用excel进行记录,涉及多个系统之间的交互。
资源推荐
资源详情
资源评论
收起资源包目录
接口自动化代码 (463个子文件)
IdnumGenerate.class 146KB
UtilTools.class 49KB
ApiTest.class 17KB
CaAccountRule.class 13KB
ExtentTestNGIReporterListener.class 11KB
TestBase.class 10KB
ExcelUtil.class 9KB
CarPlateNum.class 8KB
XmlUtil.class 7KB
RedisUtil.class 6KB
FileUtil.class 5KB
ApiConfig.class 3KB
ClassFinder.class 3KB
AutoTestListener.class 3KB
ApiDataBean.class 3KB
RandomUtil.class 3KB
CarVin.class 3KB
FunctionUtil.class 3KB
IntArabiaNumToUpper.class 2KB
SerializableUtil.class 2KB
SSLClient.class 2KB
DecodeUtil.class 2KB
DateFunction.class 1KB
MyBatisTest.class 1KB
ReportUtil.class 1KB
ExtentTestNGIReporterListener$1.class 1KB
StringUtil.class 1KB
PlusFunction.class 1KB
TestngRetry.class 1KB
Md5Function.class 1KB
RandomStrArrFucntion.class 1KB
RetryListener.class 1KB
BatisUtil.class 1KB
RandomFunction.class 1KB
MultiFunction.class 1KB
MaxFunction.class 1023B
RandomTextFunction.class 1001B
SSLClient$1.class 999B
SubFunction.class 978B
AssertUtil.class 941B
RedisTest.class 939B
BaseBean.class 751B
ErrorRespStatusException.class 472B
CaAccountRuleMapper.class 319B
Function.class 230B
.classpath 13KB
config 333B
reportng.css 5KB
description 73B
exclude 240B
.gitignore 25B
HEAD 186B
HEAD 186B
HEAD 32B
HEAD 23B
index.html 634KB
suite1_test1_results.html 386KB
output.html 146KB
overview.html 2KB
suites.html 1KB
index.html 556B
pack-c1ad6a3be9879f16dd7ceab9e3f0c79fd6fc846e.idx 25KB
api.iml 8KB
index 19KB
velocity-1.7-dep.jar 788KB
reportng-1.1.9.jar 35KB
surefirebooter462308253221590371.jar 8KB
IdnumGenerate.java 214KB
UtilTools.java 50KB
ApiTest.java 17KB
TestBase.java 13KB
ExtentTestNGIReporterListener.java 11KB
XmlUtil.java 8KB
ExcelUtil.java 6KB
RedisUtil.java 6KB
CarPlateNum.java 5KB
FileUtil.java 4KB
AutoTestListener.java 3KB
CarVin.java 3KB
ApiDataBean.java 3KB
RandomUtil.java 3KB
ClassFinder.java 3KB
ApiConfig.java 2KB
SerializableUtil.java 2KB
DecodeUtil.java 2KB
IntArabiaNumToUpper.java 1KB
SSLClient.java 1KB
FunctionUtil.java 1KB
RandomStrArrFucntion.java 998B
CaAccountRule.java 979B
TestngRetry.java 946B
StringUtil.java 807B
Md5Function.java 745B
ReportUtil.java 742B
PlusFunction.java 713B
DateFunction.java 708B
BatisUtil.java 684B
MyBatisTest.java 607B
RetryListener.java 605B
RandomFunction.java 604B
共 463 条
- 1
- 2
- 3
- 4
- 5
资源评论
sjx18292681614
- 粉丝: 2
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功