本文主要讲诉postman的使用。
目录
一、发送请求
1、发送JSON请求
(1)在“headers”添加key:Content-Type , value:application/json
(2)body中的'raw''并设定为JSON,并输入json数据
(3)点击发送请求即可
2、Get请求
3、Post请求
二、变量的使用
postman提供了4种变量类型。
-
本地变量(Local Variable)
-
全局变量(Global Variable)
-
环境变量(Environment Variable)
-
数据变量(Data Variable)
1、本地变量
本地变量主要是针对单个URL请求设置的变量,作用域只局限在请求范围内。如请求URL:https://postman-echo.com/post,设置两个本地变量(user,passwd)作为参数。请求方式为post。
在Pre-qurest Script中设置本地变量,格式为:
pm.variables.set("变量名称", 变量值);
pm.variables.set("user","yidd");
pm.variables.set("passwd","aeaqaaa");
在Params中使用本地变量,引用方式为 {{本地变量名称}}:
发送请求,以下就是请求结果:
2、全局变量
全局变量是指在所有环境里面,变量值都是一样的,全局变量的作用域是所有请求。
全局变量设置有两种方式:脚本设置和页面设置。
(1)脚本设置也从Pre-qurest Script里设置,格式为:
pm.globals.set("全局变量名称", 变量值)。比如:
(2)页面设置
点击右上角设置变量的图标,在Global选项菜单点击Edit菜单即可设置全局变量,如下图所示。全局变量的引用方式和环境变量一样。
注意:当环境变量和全局变量名称一样,切换到某个环境时,环境变量会覆盖全局变量。
请求结果如下:
3、环境变量
环境变量指在不同环境,同一个变量值随着环境不同而变化,比如我们上面举例场景就可以使用环境变量,当在测试环境时,host值为:dev.postman.com,当切换到生产环境时,host值变为:postman-echo.com。
环境变量设置:在postman界面点击右上角眼睛图标,即可开始设置环境变量和全局变量。环境变量设置过程如下图所示:可以设置两种环境dev和release,dev是开发测试环境;release是正式生产的生产环境。host环境变量,根据不同的环境值而改变。
使用方法:
先在右上方选择环境变量:
然后在用例中引用变量
4、数据驱动
有时针对一个接口需要测试很多不同的参数,如果每次一个个去修改参数值来进行测试这样效率肯定比较低下。因此需要每次迭代执行传入不同的参数进行测试,那么需要导入外部数据文件进行参数化,也就是数据驱动。
数据变量使用之前要在pre-request script中定义过,可以定义为全局变量或环境变量。
示例:有一个接口,是json请求,需要迭代不同的用户名、密码,需要校验每次返回的Json报文data字段中包含该用户名和密码。
(1)准备一个json数据文件dataJson.json,数据内容如下:
[{
"username":"Jack",
"passwd":"6666"
},{
"username":"Bob",
"passwd":"5555"
},{
"username":"Marry",
"passwd":"8888"
}]
(2)在Pre-request脚本中设置所需的变量来对应json文件中的字段:
pm.globals.set("username", data.username);
pm.globals.set("passord", data.passwd);
(3)设置json请求体,Body选择raw,内容如下:
{
"username":{{username}},
"passwd": {{passord}}
}
另外别忘了设置请求头。
(4)设置用例的检查点:
点击Tests,编辑脚本,这里主要是验证返回的json数据中,data字段是否包含用户名、密码:
username = pm.globals.get("username");
passord = pm.globals.get("passord");
console.log("username: " + username);
console.log("passord: " + passord);
pm.test("验证data字段中含有username", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.data).to.include(username);
});
pm.test("验证data字段中含有passord", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.data).to.include(passord);
});
(5)保存之后,点击Runner:
(6) 选择用例集、数据文件:
这样就可以看到运行结果 了 :
三、测试断言
postman可以对接口请求响应进行校验,在Tests里面编写测试断言即可,所用的语法是js。为方便编写测试脚本,postman在Tests的右侧有常用的校验方法,点击就可以插入到脚本中:
接口常用的检验点有以下这些:
1、检查状态码
pm.test("检查状态码是否为200", function () {
pm.response.to.have.status(200);
});
2、验证返回的报文是否是json格式:
var schema = {};
var jsonData = pm.response.json();
pm.test('Schema is valid', function() {
pm.expect(tv4.validate(jsonData, schema)).to.be.true;
});
tv4为Postman引入的外部库,想了解的可以去看官方文档
3、验证返回的json报文字段的数量是否正确:
var jsonData = pm.response.json();
// 获取json的字段数量
var len = Object.keys(jsonData).length;
pm.test("返参的字段数是否为7", function () {
var jsonData = pm.response.json();
pm.expect(len).to.eql(7);
});
4、验证返回body内是否含有某个值
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
5、验证某个字段是否是一个预期的值
pm.test("Your test name", function () {
var jsonData = pm.response.json();
// 验证返回的json报文value字段的值是100
pm.expect(jsonData.value).to.eql(100);
});
6、验证返回头类型
pm.test("Content-Type is present", function () {
pm.response.to.have.header("Content-Type");
});
四、构建工作流和批量执行
再使用"Collection Runner"的时候,集合中的请求执行顺序就是在请求Collection中的显示排列顺序。但是,有的时候我们不希望按照这样的方式去执行,可能是执行完第个请求,再去执行第五个请求,然后再去执行第二个请求这样的顺序;那么在"Collection Runner"中如何去构建不同的执行顺序呢?有两种方法:
1、在集合中拖动顺序
2、通过脚本设置。每次去拖动比较麻烦,特别是当请求比较多的时候。
在请求Tests脚本中设置下一个要执行的用例是Request 3:
postman.setNextRequest('Request 3')
批量执行,也就是用Collection Runner 来批量运行,参考前面数据驱动的部分。
五、newman命令执行用例
如果想把测试脚本集成到CI平台,或者在非图形界面的系统环境下测试,就需要用到Newman。
1、将postman的测试用例集合导出到桌面新建文件夹pmtest:
2、导出环境变量到同一个文件夹pmtest中
点击设置
点击下载
3、导出全局变量
4、把用例中用到的数据文件也放到同一个文件夹中
注意:如果导出的文件夹名称中有空格,请删掉,否则执行newman命令时会报错。
5、在该文件夹右击进入命令,执行以下命令:
newman run 接口测试.postman_collection.json -e release环境.postman_environment.json -g MyWorkspace.postman_globals.json -d dataJson.json -r html
六、newman常用命令
1、运行一个集合
newman run 集合名
newman run url地址
2、-e,–environment 指定环境文件路径或者url
-e的用法是如果我们的集合设置到环境变量,那么但是运行集合文件是报错的,需要使用-e指定才能运行集合,比如运行测试搜索集合
newman run d:\test.postman_collection.json -e d:\test.postman_environment.json
3、-g,–globals 指定全局变量的文件地址或url 用法如-e
4、-d,—-iteration-data 指定用于迭代的数据源文件路径
newman run d:\test.postman_collection.json -e d:\test.postman_environment.json -d d:\testdata.csv
5、-n,–iteration-count 指定迭代次数