问题:测试的本质就是判断对错,要么在接口自动化中如何判断一个请求是否通过?
解决:postman的Tests板块中引入断言
Tests编辑内是用JS执行环境的,需要懂一些些JS语言逻辑(我只会一丢丢丢java基础,全靠查资料跟着写的。如果没有编程基础,或者像我一样只能看懂简单代码的,建议不要企图一次性全部掌握。根据实际具体项目需要,只看要用的比较好。)
核心语法:tests[“判断条件的说明文字,会打印出来”]= 运算表达式
tests是特定写法,断言显示的内容就是[]内的string字符串,中英文都可以,根据自己需要来写。
运算表达式结果为 True的话,则断言结果为 Pass(绿色);
运算表达式结果为 False的话,则断言结果为 Fail(红色);
举几个常用的:
//检查返回状态code是否为200 responseCode.code就是获取响应的状态码
tests[请求响应码是否等于200] = responseCode.code===200;
//检查返回时间是否小于200毫秒
tests[请求时间是否小于200毫秒] = responseTime<200;
//将返回的body信息转换成josn JSON.parse是将json字符串转换成JSON对象
var data = JSON.parse(responseBody)
//检查返回的body里面的isSuccess的值是否为true
tests[请求处理是否成功] =data.isSuccess === true;
//检查返回的响应头里面是否包含Content-Type
tests[响应头是否包含Content-Type] = postman.getResponseHeader(Content-Type);
//tests[Content-Type is presnt(出现)] = responseHeaders.hasOwnProperty(Content-Type);
//检查返回body里面是否包含某个字符串
tests[返回信息里是否包含'城乡居民'] = responseBody.has(城乡居民);
//tests[返回信息里是否包含头部‘headers’(true/flase):+responseBody.has(headers)] =responseBody.has(headers);
//tests[返回信息里是否包含‘flag’(true/flase):+responseBody.has(flag)] =responseBody.has(flag);
//postman内置schema脚本,主要用于验证字段类型
var schema = {
items: {
type: boolean
}
};
var data1 = [true, false]; //布尔型
var data2 = [true, 123]; //不是布尔型
tests[Valid Data1] = tv4.validate(data1, schema); //pass
tests[Valid Data2] = tv4.validate(data2, schema); //fall