postman支持JS脚本,他允许用户向请求和集合添加动态行为。通过使用js脚本,可以构建包含动态参数的请求,在参数之间传递数据。用户可以在下面的两个事件流中添加js脚本代码。
①在请求发送到服务器之前,添加行为“pre-request-script”选项卡下的请求脚本。
②在收到响应之后,添加行为“tests”选项卡下的测试脚本。如下图所示
用户可以将预请求和测试脚本添加到一个集合、文件夹、一个请求中。
1、为集合添加脚本
2、为文件夹添加脚本
3、为请求添加脚本(同上)
在postman中单个请求的脚本执行顺序如下
①与请求相关联的预请求脚本将在请求发送之前执行
②与请求关联的测试脚本将在接受响应之后执行
对于集合中的每个请求,脚本将按照下图所示顺序执行
①与集合相关的预请求脚本将在集合中的每个请求之前运行
②与文件夹相关的预请求脚本将在文件夹中的每个请求之前运行
③与集合相关的测试脚本将在集合中的每个请求之后运行
④与文件夹相关的测试脚本将在该文件夹中的每个请求之后运行
对于集合中每个请求,脚本总是按照下面的额层次结构运行:集合级脚本、文件夹级脚本、请求级脚本。注意,此执行顺序适用于预请求和测试脚本。为了验证其正确性,可以创建这样一个集合,其中包含一个文件夹和两个请求,如下图所示。
运行集合后,可以查看postman控制台输出日志顺序:
5、测试脚本
postman工具借助测试脚本帮助用户自动判断接口是否正确,相当于jmeter的断言。
①检查响应体中是否包含一个字符串
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
②将XML格式的响应转换成JSON对象
var jsonObject = xml2Json(responseBody);
console.log(jsonObject);
③检查响应体等于一个字符串
pm.test("Body is correct", function () {
pm.response.to.have.body("response_body_string");
});
④检查响应体的json值
pm.test("Your test name", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
⑤检查响应体中包含某个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);
});
⑦要求http-status为200
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
⑧要求响应code包含某个字符串
pm.test("Status code name has string", function () {
pm.response.to.have.status("Created");
});
⑨要求status code符合某种条件
pm.test("Successful POST request", function () {
pm.expect(pm.response.code).to.be.oneOf([201,202]);
});
⑩使用轻量级验证器
var schema = {
"properties": {
"count": {type:"number"}
}
};
var data1 = JSON.parse(responseBody);
pm.test('Schema is valid', function() {
pm.expect(tv4.validate(data1, schema)).to.be.true;
});
发送一个请求
pm.sendRequest("https://postman-echo.com/get", function (err, response) {
if(err){
console.log(err);
}else{
console.log(response.json());
}
});