什么是tests模块?
我们检验一个测试点是否通过,一般会将我们心理预期的结果 与实际结果进行比对,如果结果一致则证明测试通过,如果结 果不一致,则证明测试不通过,这即是我们经常所说的断言。 在 postman 中封装了我们常见的断言(Tests),当然 Tests 除 了可以作为断言,还可以当做后置处理器,经常应用于:
【1】获取当前接口的响应,传递给下一个接口
【2】控制多个接口间的执行顺序。
tests模块使用场景(9种)
1、状态码
在tests模块中的snippets中有快捷选项可点击
代码分析: 1、该使用场景可用在判断该接口是否相应成功,状态码为200 2、pm对象是Postman的主要对象,所有的内置函数,数据调用等,都需要通过它来实现。 3、pm.test("Judgment ",function())是postman的一个内置对象,第一个引号中的内容,是断言名称,可以根据需要来填写;function()为断言判断函数。
2、响应内容
在tests模块中的snippets中有快捷选项可点击
代码分析: 1、该使用场景可用在判断响应正文中是否包含该字段; 2、将其转化为伪代码格式: pm.expect(从response里获取的字符串).to.include("必须包含的内容"); 这样我们就可以比较容易地解读这句代码,即“期待”返回结果必须包含某一段内容
对于一个接口请求响应结果如下,如果我们想对id这个对象的结果进行检查 1、只检查id的值 2、整个键值对检查
1、只检查id的值 将需要检查的字符串复制到下图相应位置即可
2、整个键值对检查 将需要检查的键值对复制到相应位置(下图报错是由于键值对内包含引号导致格式错误)
解决办法1:使用转义符号 \”
解决方法2:最外层使用单引号
3、解析响应内容
在tests模块中的snippets中有快捷选项可点击
代码分析: 1、该使用场景可用在对响应内容进行解析,然后对解析后的内容进行参数获取或内容断言; 2、与方才的pm.response.text()不同,.text()方法是直接取响应的文本格式,.json()方法则是先将响应转化为json格式,jsonData变量其实是解析完JSON后的对象 3、在JS语法中,一个JSON对象获取其属性的值,直接是用jsonData.value
下图为接口响应内容,若我们想判断list数组里第一个数据name是否为盗墓笔记
1、把接口响应内容存入jsonData中
2、定位数据中list列表的第一个数据的name属性jsonData.d.list[0].name
3、判断name的值是否等于“盗墓笔记”
4、若相等,则通过断言
4、类型判断
在tests模块中的snippets中有快捷选项可点击
代码分析: 1、判断响应内容的类型是否为期望类型 2、要做类型判断,首先我们要拿到对象的类型,js中,使用typeof方法可以拿到js中的数据类型:Null、Boolean、Number、String和Object
如果我们不知道这个数据是什么类型的,可以利用postman的调试器来先验证一下,使用console.log()打印需要的日志 console.log(typeof jsonData.d);
5、响应时间
在tests模块中的snippets中有快捷选项可点击
代码分析: 1、可以对请求的响应时间做一个监控,超过多长时间即视为该接口请求超时
6、数组中是否包含期望值
前面说明了目标位于数组第几位和对象名称时,获取该对象的值十分简单。在我们不关心该对象位于哪个位置,只想验证本次请求响应中存在这个数组,且该数组中包含我们想要的对象呢?
1、首先我们还是需要将响应内容json格式化
2、将这个数组遍历一遍,这边使用到的是for循环然后一组一组进行判断该对象的值是不是期望值
3、若找到期望值,则将tests模块的值与结果挂钩,存在期望值,则本次测试结果为通过,否则为失败
打印出来name是一个数组
7、headers
对于一个请求,有时候重要的并不是响应体responseBody中的内容,而是headers中的参数更重要,这个时候,我们就要对头部参数的内容进行断言
在SNIPPETS中,找到一项”Response headers:Content-Type header check”,意思为测试response Headers中的某个元素是否存在(如:Content-Type),该值可以根据实际需求替换成实际的headers参数去进行判断
如果我们要去验证header的值是不是符合预期,就可以用前面所讲的【响应解析内容】的部分进行验证
var server = responseHeaders.Server; tests["server的值"] = server == "nginx/1.8.0";
8、json格式规范化
判断目标对象是否存在于数组中,且判断该对象的数据类型是否为期望类型 如:判断result中id存在,且数据类型为字符串
步骤: 1、首先要将响应信息json格式化,然后取到目标数组
2、对目标数组是否含有目标对象进行断言
3、对该对象的数据类型进行断言
9.其他智能生成代码解释