1 Postman 编写接口
1.1 Collection编写
相信大部分盆友都用postman调用单个接口,Collection就是相当于把一系列接口集成起来,可以传递参数,完成一些简单的业务逻辑的验证,而不是像单接口那样只调用校验单个接口是否能通。
当然,形成collection后,后面批量跑接口时候会方便点,而且可以设置循环次数循环跑,对于需要造大量测试数据时候还是很友好的。
Collection中可以添加文件夹对接口进行归类显示。
1.2 Collection 执行顺序
所有请求会按照您在 Postman 中看到的顺序运行。因此,首先按文件夹的顺序执行所有请求,然后是集合根目录中的所有请求。
如果单纯想改变执行顺序,那可以上下拖动显示顺序以调整执行顺序。但是,您可以使用名为 的内置函数覆盖此行为postman.setNextRequest()。顾名思义,此函数允许您指定接下来运行哪个请求。
稍微演进一点,他可以在断言中很灵活的运用,比如:
const responseJson = pm.response.json()
#根据自己接口的返回值取值
relation = responseJson.xxxx.relation
block_relation= responseJson.xxxx.block_relation
# xxx可以为接口的名称或者ID
if(relation == 2 || relation == 1){
postman.setNextRequest("xxx")
}
if(block_relation == 1){
postman.setNextRequest("xxxx")
}
说明下,如果使用了postman.setNextRequest(“xxxx”) 跳转到指定接口,那这两个接口之间的接口就会被忽略了,不会执行。
1.3 Collection 前置脚本以及断言
每个接口的Pre-request-script 和test中可以编写调用前的脚本、以及调用后断言验证,是基于JavaScript的,而且大部分想用的断言情况,pm.test()方法都内置好了,灵活而且强大。
其中,Pre-request-script 脚本会在接口请求之前执行,test中脚本会在接口请求之后执行;如果Collection、文件夹接口中都分别添加了Pre-request-script 、test脚本,那执行顺序会是:
Collection中Pre-request-script -> 文件夹中Pre-request-script -> 接口中的Pre-request-script -> 请求 -> Collection中的test -> 文件夹中test -> 接口的test
官方文档的图
Pre-request-script 主要用于对前置接口的返回值字段需要做一些定制化处理,比如官方文档这个例子:
test 断言脚本,主要是验证接口的调用结果,除了验证常规的返回值状态,有时候根据业务需要还有校验一些字段类型、值等等。
主要验证方法为pm.test() 断言方法pm.expect()
然后,根据自己的验证需求,支持添加js代码
pm.test("Status test", function () {
pm.response.to.have.status(200);
pm.expect(pm.environment.get("env")).to.equal("production");
});
更多详细的例子,请移步postman官方文档的例子
如果觉得官网太多,可移步 postman常用断言实例
1.2 设置变量以及参数化
单击Postman右上角的Environment 眼睛按钮,然后单击Globals旁边的Edit,可以快速创建变量。接口调用时 {{}} 调用。
变量有以下几种范围:
- 全局变量允许您访问集合、请求、测试脚本和环境之间的数据。全局变量在整个工作区中都可用。
- 如果您仅使用单个环境,则集合变量是合适的,例如用于身份验证 / URL 详细信息
- 环境变量允许您针对不同环境定制处理,例如本地开发与测试或生产。一次只能激活一个环境。
- 如果只有一个环境,使用集合变量会更有效率,但是环境允许您指定基于角色的访问级别。
- 局部变量是临时的,只能在您的请求脚本中访问。局部变量值仅限于单个请求或集合运行,并且在运行完成后不再可用。
- 数据变量来自外部 CSV 和 JSON 文件,用于定义在通过 Newman 或 Collection Runner 运行集合时可以使用的数据集。
除了界面上在右上角设置变量外,不同接口数据传送过程中也可以在断言中设置:
#设置全局变量
pm.globals.set("variable_key", "variable_value");
#设置集合变量
pm.collectionVariables.set("variable_key", "variable_value");
#设置环境变量
pm.environment.set("variable_key", "variable_value");
#局部变量
pm.variables.set("variable_key", "variable_value");
#断言脚本中获取变量
pm.variables.get("variable_key");
pm.globals.get("variable_key");
pm.collectionVariables.get("variable_key");
pm.environment.get("variable_key");
#提取外部数据文件中的数据变量
pm.iterationData.get("variable_name")
下面列举下,我在断言中的使用案例,可能会更直观点
# 比如登录接口,想把cookie(token)设置到环境变量中供后续接口使用
# 返回结果转化成json格式后,‘data.xxx.cookie’后面就具体结构取到cookie或者data就可以
var data = JSON.parse(responseBody)
pm.environment.set("cookie", data.xxx.cookie)
# 下面人员信息例子中取特定的userid取法
const responseJson = pm.response.json()
userlist = responseJson.result.list
for(var i =0; i < userlist.length; i++){
if(userlist[i].name == "xiaohua"){
pm.collectionVariables.set("userid", userlist[i].userid);
}
}
#人员信息json
{
"status":"success",
"code":200,
"result":[
{
"name":"xiaohua",
"userid":"1234",
"sex":"male",
"birth":"1970-7-7"
},
{
"name":"xiaoming",
"userid":"1235",
"sex":"male",
"birth":"1970-7-7"
}
]
}
2 Newman运行并生成测试报告
2.1 Newman命令
newman run collectionname -e xxx -g xxx
各参数 -e 设置环境变量、-g设置全局变量、-r 生成报告、-n指定迭代次数、-d指定迭代数据文件
2.2 生成报告
Newman可以生成html、htmlextra两种类型的报告
详细可参见上篇文章:Newman生成美化报告
3 Jenkins定时构建并邮件发送报告
3.1邮件发送测试报告,并将报告内容展示到邮件中
邮件发送时,可以添加Email Extension Plugin 插件,这个插件可以自定义报告格式和样式。
安装后,需要在Jenkins 系统管理-系统配置,邮件通知部分配置邮箱服务器,同时系统配置中 “系统管理员邮件地址”的邮箱地址应该也要和这里配置的用户名是同一个邮箱。
然后还是在系统设置中的 Email Extension Plugin部分,配置发件信息。
其中 邮件格式的代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
</head>
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"
offset="0">
<h3>以下是Jenkins自动发送的邮件,请勿回复!</h3>
<div>
<table width="95%" cellpadding="0" cellspacing="0"
style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
<tr>
<th><br />
<h2>构建信息</h2>
</th>
</tr>
<tr>
<td>
<ul>
<li>项目名称 : ${PROJECT_NAME}</li><br />
<li>测试报告Url : <a href="${PROJECT_URL}HTML_20Report">${PROJECT_URL}HTML_20Report</a></li><br />
<li>触发原因: ${CAUSE}</li><br />
<li>项目 Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li><br />
</ul>
</td>
</tr>
</table>
</div>
<div>
<table>
<tr>
<th><br />
<h2>测试报告</h2>
</th>
</tr>
<tr>
<td>
<div>${FILE ,path="/Users/admin/index.html"}</div>
</td>
</tr>
</table>
</div>
</body>
</html>
其中这里需要按自己实际路径稍微修改下,处改成邮件报告的地址,能让报告展示到邮件正文中。
${FILE ,path="/Users/admin/index.html"}
收到效果如下:
3.2 钉钉发送
配置钉钉发送还是比较简单的,
1、Jenkins 安装钉钉插件;
2、钉钉群里,添加上机器人,把机器人名称、webhook、关键字等信息填到Jenkins-系统管理-系统配置-钉钉部分,并勾选通知时机
3、job中勾选相应的钉钉机器人
参考文档:
Postman官方文档