Postman-Tests模块介绍

346 阅读5分钟

什么是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.其他智能生成代码解释