postman接口自动化测试实战
在网上找了一个接口来实践一下,因为接口地址每日有次数限制,就打码了。
接口文档:
名称 | 类型 | 必填 | |
---|---|---|---|
key | String | 是 | |
keyWord | String | 是 | 查找关键词 |
page | Int | 否 | 请求页数,默认page=1 |
rows | Int | 否 | 返回记录条数,默认rows=20,最大50 |
dtype | String | 否 | 返回结果格式:可选JSON/XML,默认为JSON |
format | Boolean | 否 | 当返回结果格式为JSON时,是否对其进行格式化,为了节省流量默认为false,测试时您可以传入true来熟悉返回内容 |
重点在于测试用例的设计,在拿到接口文档后就可先写好用例,用例设计看这张图
首先发送一个正常的请求,看一下请求返回结果
主要是根据返回的json来设计一下tests验证的内容,简单的写了几个:
1.验证返回的状态码
2.格式化返回数据
3.验证返回的data中是否存在result字段,没有false
4.验证result中是否存在第二条数据,没有false
5.存在第二数据的话,则取第二条数据
6.判断第二条数据中的id是否取到,如果取到为true
7.将取到的id设为环境变量,供下个接口调用
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
// 将结果解析成json格式
var data = JSON.parse(responseBody);
// 判断返回的数据中result字段是否有值
if(data.result){
tests['结果是否存在'] = true;
// 判断result中是否存在第二个字典项
if (data.result[1]){
tests['是否存在第二条数据'] = true;
// 取result中第二个字典项
var a = data.result[1];
// 判断字典里的id有没有取到
if (a.id){
tests['是否取到《'+a.name+'》的ID'] = true;
// 将id设为环境变量,供下个接口使用
pm.environment.set("tssc_id", a.id);
}
else{
tests['是否取到《'+a.name+'》的ID'] = false;
}
}
else{
tests['是否存在第二条数据'] = false;
}
}
else{
tests['结果是否存在'] = false;
}
可以看到我们的用例全部通过
我们把刚才取到的id设为了环境变量{{tssc_id}}
用这个接口的返回值作为另一个接口的入参
可以看到是成功请求数据的
这是一个用例 我们可以使用runner来批量执行用例,将用例写在csv文件中
重点还是用例设计,随便写了几个仅做演示
postman中读取数据的时候,会将表名默认的认为是data。所以在读取数据的时候,比如读取keyword这一列的数据,则书写为data.keyword。postman会按照data.keyword的读取方式读取数据直到数据为空。
我们用Excel写完后,用notepad打开,转为utf-8格式,不然可能会乱码,postman识别不了
修改我们的接口参数
与文件的标题一致
我们是需要对表格中的数据进行参数化,所在在发送请求之前,我们要让postman能够读取到文件中的数据,在postman中,Pre-request Script中的语句postman会在请求发送之前执行,所以读取语句的操作,我们放在这里执行
我们打开runner进行设置环境变量,选择csv文件,可以点击preview预览
如果乱码的话会执行失败
最后我们点击run按钮进行测试,看一下结果
当然也可以点击名称分析与tests中验证的是否一致
到此为止postman的使用告一段落,大体满足日常使用,接着会介绍一下postman+newman+jenkins的使用
上一篇: JSP
下一篇: 探讨:如何编写PHP扩展_php技巧