今天给大家分享的内容是接口测试必备的postman测试工具的使用:postman发送get与post请求,变量的设置与引用,文件的导入与导出,断言机制,参数化,批量执行测试集,环境变量与全局变量的设置,定时器的使用,关联,测试结果的导出。
Postman简介
下载地址:https://www.getpostmacom/appsPostman是谷歌开发的一款网页调试和接口测试工具,能够发送任何类型的http请求,支持GET/PUT/POST/DELETE等方法。Postman非常简单易用,可以直接填写URL,header,body等就可以发送一个请求,用来测试api接口非常方便。
Postman的优点
Postman接口测试工具的使用
创建文件夹
创建文件夹来保存我们接口请求的数据。
postman创建文件夹
菜单栏介绍
同步请求-同步请求数据到本地抓包标-使用Postman抓取API请求和cookie设置标-应用程序设置通知标-接收通知或广播分享标账户管理
完成get请求和post请求
Get请求:参数在params里设置。
get请求
Post请求:参数在body里设置。
方式表单提交,在body中选择x-www-form-urlencoded等价于application/x-www-from-urlencoded,会将表单内的数据转换为键值对。
方式row传参可以上传任意格式的文本,可以上传text、jsoxmhtml等,一般消息主体是序列化的JSON字符串。
方式Form-data传参就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。
post请求
设置参数
设置参数可以使用bulkedit模式和Key-valueedit模式。
设置参数
导出和导入接口文件
文件导入与导出
断言
Postman添加响应处理,通过检查响应数据是否符合预期来判断用例是否通过。Postman提供了很多常用断言方式:比如对响应状态码、响应内容等进行断言。
断言
常见断言代码
//判断返回状态码为200
pm.test('Status code is 200', function () {
pm.response.to.have.status(200);
});
//判断返回元素中含有ok
pm.test('Body matches string', function () {
pm.expect(pm.response.text()).to.include('OK');
});
//判断返回json数据中某个键对应的值,Your test name表示这个测试片段的名称,可以自己任意定义;jsonData.value表示响应json串中的某个键,
pm.test('Your test name', function () {
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
//判断响应内容是否和预期内容完全一致
pm.test('Body is correct', function () {
pm.response.to.have.body('response_body_string');
});
//检查content-Type是否包含在header返回
pm.test('Content-Type is present', function () {
pm.response.to.have.header('Content-Type');
});
//响应时间小于200ms
pm.test('Response time is less than 200ms', function () {
pm.expect(pm.response.responseTime).to.be.below(200);
});
//成功的POST请求状态码
pm.test('Successful POST request', function () {
pm.expect(pm.response.code).to.be.oneOf([201,202]);
});
//状态码:代码中有指定字符串Created
pm.test('Status code name has string', function () {
pm.response.to.have.status('Created');
});
//response body:将XML转换为JSON对象
var jsonObject = xml2Json(responseBody);
将接口文件转化为不同的代码
接口文件转为不同代码
参数化
在环境中设置参数,为参数设置不同的值。
参数格式:{{参数名称}}
参数化
参数的引用
文档参数化:Postman支持Json文档,txt文档,CSV文档
txt文档
引用变量
迭代
Runner中设置迭代,对接口进行批量测试,可以对文件夹中的所有接口进行批量测试。
批量运行测试集
环境变量和全局变量
接口测试时,为了方便修改和管理环境和参数,我们会把域名信息和请求的固定参数设为环境变量,把接口参数的请求或者返回参数中的固定值设为全局变量。
全局变量
代码设置全局变量:在tests模块设置。
可视化设置全局变量:小眼睛—global—edit
设置全局变量
进入对应界面后,便可直接进行管理
管理变量
多环境区分与切换
通常情况下,我们的接口都会分为测试版本和线上版本,而他们的区别可能仅是ULR不同,那么全局变量便不大合适解决这个问题。
代码设置环境变量:
//注意,该参数只添加到你当前选择的环境的“参数集”中
设置环境变量
环境变量
使用环境及变量:{{name}}
切换环境
定时任务
postman定时任务
0.请求依赖
接口与接口之间可能会有数据依赖的问题。比如购物下单接口需要依赖登录接口返回的一个标识token,那么我们请求下订单接口时只要一起携带token参数进行请求即可。所以问题变为:保证接口调用顺序。即将接口A返回的数据传递给后续的接口D。
0.1接口默认执行顺序
接口执行顺序
0.2自定义执行顺序
自定义执行顺序
自定义执行顺序需要注意几点
postmasetNextRequest()只在运行集合测试的时候生效,也就是说我们单独运行(Sen接口Request1时,函数是不起作用的。当我们运行集合测试成功从Request1->Request3后,如果Request3后面还有接口,那么后面的接口仍然继续按默认顺序执行,即中的接口Request4仍会被执行。指定的跳转接口必须属于同一个集合中。setNextRequest()函数不管在Tests脚本中何处被调用,它都只在当前脚本最后才被真正执行。比如我们将中的第二行与第一行互调后,那么在运行跳转函数后第二行代码仍会被执行。利用setNextRequest()函数,我们便可以按照条件跳过不必要的接口,或者建立我们自己的一个逻辑测试。
0.3解决依赖问题
掌握以上的预备知识后,我们开始看看如何用Postman解决存在依赖关系的接口测试。
假设场景
我们的接口Request1为登录接口,登录成功将会返回一个access_token字段作为标识。那么假设接口Request3为一个下订单的接口,需要携带登录返回的access_token才能正常访问。
保证Request1在Request3之前被运行将Request1返回的access_token的值添加到环境变量'参数集'中。Request3在请求时引用access_token的值
将返回值存在“全局变量”或者“环境变量”中,视具体业务情况而定,该例中access_token的值是与环境有关的,所以这里选择使用环境变量集存储。
Postman中的操作
if(responseCode.code === 200 && responseBody.has('access_token')){
//如果 code 为 200, 并且返回的数据中存在 access_token 关键字,则认为登录成功
tests['login'] = true;
//将返回的内容转为 json 格式,并且取到 access_token 内容,添加到环境变量中
var jsonData = JSON.parse(responseBody);
//access_token的取值方式视具体的 json 数据结构而定
postman.setEnvironmentVariable('token',jsonData.result.access_token);
//跳转到 Request3 接口
postman.setNextRequest('Request3')
}else{
tests['login'] = false;
//登录失败,可以选择跳转到对应失败后的处理接口进行测试
//postman.setNextRequest('Other Request')
}
}
运行并查看结果
运行集合测试,可以看到我们结果符合我们的预期,Request1和Request3通过测试,Request2被跳过,Request4仍被执行。
导出测试结果
导出测试结果
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点