02_postman断言

转自:https://www.cnblogs.com/101718qiong/p/9662721.html 和 https://www.cnblogs.com/xiaoxi-3-/p/7839278.html

三、postman断言

一个完整的接口测试,包括:请求->获取响应正文->断言,我们已经知道了请求与获取响应正文,下面来介绍如何用postman进行断言。

 断言就是预期结果,断言的位置常在状态码或body中,

脚本运行成功返回200的状态码只能说明发送请求和接收响应没有问题,但响应内容不一定是我们想要的。这个时候要拿响应内容与 API 文档的响应参数做对比,响应内容与 API 文档的响应参数符合则用例测试通过,否则用例测试失败。
 
postman断言是JavaScript语言编写的,在postman客户端指定区域编写即可。

断言会在请求返回之后,运行,并根据断言的passfail情况体现在最终测试结果中。

一、断言步骤

1、打开保存的postman完成的访问百度经验的一个简单的Get请求。点击Send,查看响应信息。

这里就设置,检查响应信息里面包含:“百度新闻——全球最大的中文新闻平台”这几个字、

同时设置响应httpCode为200,断言响应成功。

 

2、点击Url下方的Tests,这里设置断言。

点进来后这里是空的,你如果熟悉JavaScript的函数,可以直接手动输入,如果不熟悉,postman在右侧已经提供了tests片段。

点击Learn more tests可以了解更多代码片段。

找到Response body:Contains string响应body包含字符串。点击。

在Tests框内出现一段代码片段,其他不用管,只需要将string_you_want_to_search字符串,替换为:百度新闻——全球最大的中文新闻平台

即可,而且代码片段写的很明白,从英文意思就可以了解该如何设置。

即如下的test['XXX']中"XXX",可以根据需要自行修改提示

pm.test("Status code is 200", function () {
pm.response.to.have.status(200);  

找到代码片段。Status code:code is 200.点击。

生成断言httpCode为200的代码片段。

Ctrl+s保存一下请求的设置。

然后点击Send发送请求,查看响应信息。

响应中查看Tests Results。设置的检查全部成功。

补充:另一断言测试场景要求:解析响应正文,并判断statusCode的值是200,message的值是”Success”

我们需要解析JSON串了,所以,在SNIPPETS中找到”Response body:JSON value check”并点击,在其左边,断言代码自动添加,见下图:


JSON value check1

我们可以看出,这里面其实是JS代码,jsonData变量其实是解析完JSON后的对象,在JS中,一个JSON对象获取其属性的值,直接是用jsonData.value,于是,我们把代码给修改一下,来判断第3条场景:

tests["response statusCode"] = jsonData.statusCode === 200;  //判断statusCode的值是200

tests["response message"] = jsonData.message === 'Success';  //判断message的值是”Success”

 

二、断言内容详解

1.设置环境变量--Setting an environment variable 

postman.setEnvironmentVariable("key", "value");

2.设置全局变量--Set a global variable

postman.setGlobalVariable("key", "value");

3.检查响应中包含string--Check if response body contains a string

tests["Body matches string"] = responseBody.has("string_you_want_to_search");

4.转化XML格式的响应成JSON对象---Convert XML body to a JSON object

var jsonObject = xml2Json(responseBody);

5.检查响应body中等于指定string--Check if response body is equal to a string

 tests["Body is correct"] = responseBody === "response_body_string";

6.检查JSON某字段值--Check for a JSON value

var data = JSON.parse(responseBody);

tests["Your test name"] = data.value === 100;

7.检查Content-Type是否包含在header返回(大小写不敏感)--Content-Type is present (Case-insensitive checking)

 tests["Content-Type is present"] = postman.getResponseHeader("Content-Type"); //Note: the getResponseHeader() method returns the header value, if it exists.

8.检查Content-Type是否包含在header返回(大小写敏感)--Content-Type is present (Case-sensitive)

 tests["Content-Type is present"] = responseHeaders.hasOwnProperty("Content-Type");

9.检查请求耗时时间小于200ms--Response time is less than 200ms

tests["Response time is less than 200ms"] = responseTime < 200;

10.检查Status code为200--Status code is 200

tests["Status code is 200"] = responseCode.code === 200;

11.检查Code name是否指定string--Code name contains a string

 tests["Status code name has string"] = responseCode.name.has("Created");

12.检查成功post的请求status code--Succesful POST request status code

tests["Successful POST request"] = responseCode.code === 201 || responseCode.code === 202;

原文地址:https://www.cnblogs.com/dashu123/p/11798048.html