环境:httpclient+jsonpath+testng+ExtentReport(jdk8)
demo中的用例以百度的api store为例(具体查看:百度api商城)
api请求根路径、请求头及初始化参数值可以在api-config上进行配置。
<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请求用例具体数据。除表头外,一行代表一个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的数据进行提取存储。
说明:
若配置文件(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” 将不会进行拼接。
若verify填写值为:“$.errorCode=0;$.errorMessage=success”,则会校验返回值中$.errorCode的值为0,$.errorMessage的值为success,只要有一个校验错误,后面的其他校验项将停止校验。
若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存在,则会执行相应的函数后进行替换。先支持函数如下:
//若param中值为:
{"username":"__random(6,true)"}
//实际执行时,username的值会替换为长度为6的数字随机数如:
{"username":"653495"}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。