Postman常用断言功能解析

一、Postman断言模块

二、七种常规业务断言

前4种最常用:

1)Status code:Code is 200 检查返回的状态码是否为200

2)Response body:Contains string 检查响应中包括指定字符串

3)Response body:Json value check 检查响应中其中json的值

4)Response body:is equal to a string 检查响应等于一个字符串

5)Response headers:Content-Type...检查是否包含响应头Content-Type

6)Response time is less than 200ms:检查请求耗时小于200ms

7)Status code :Successfull POST  request :判断post请求的状态码,是不是在201和202这两个之中

三、全局断言:一般是 状态断言

四、常规业务断言

3.1. Status code:Code is 200 检查返回的状态码是否为200

//状态码业务断言 == 全局断言,一个地方处理即可

pm.test("检查返回状态码为200", function () {
    pm.response.to.have.status(200);
});

3.1. 总结:

Status code 不等于200时,断言报错;反之==200时,断言通过

3.2. Response body:Contains string 检查响应中包括指定字符串

//Postman源码
pm.test("Body matches string", function () {
    pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});

 

3.3. Response body:Json value check 检查响应中其中json的值

//Postman源码
pm.test("Your test name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.value).to.eql(100);
});

其中pm.test意为postman中的test模块

pm.test(“assert name”, function()‘{*****}’)

可以理解为是其固定格式而{****}就是断言的主要内容;

{ var jsonData = pm.response.json();--------①
pm.expect(jsonData.code).to.eql(100);}------------②

①主要是对响应做一个json格式的转换,先把响应转换为json格式
②通过取值jsonData.code 取响应结果中key键为code的值 与100进行等值比较
pm.expect(jsonData.code).to.epl(100) 

3.4. Response body:is equal to a string 检查响应等于一个字符串

//Postman源码
pm.test("Body is correct", function () {
    pm.response.to.have.body("response_body_string");
});

3.4.总结

其中response_body_string对应的是响应体的全部内容,这种断言方式在响应体内容比较多的时候是不建议使用的,需要注意只有响应体与预期的完全相同才会断言成功

3.5. Response headers:Content-Type...检查是否包含响应头Content-Type

//Postman源码
pm.test("Content-Type is present", function () {
    pm.response.to.have.header("Content-Type");
});

3.5.总结

据这个思路我们把断言脚本中的Content-Type替换成Date,就是断言响应头中是不是存在Date这个key值(json是以Key-Value键值对的形式存储的)

3.6. Response time is less than 200ms:检查请求耗时小于200ms

//Postman源码
pm.test("Response time is less than 200ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(200);
});

3.6.总结

其中“Response time is less than 200ms”是你为这个断言所起的名字,可以自定义在运行接口测试的时候会在test的结果中显示出来如图:

3.7.Status code :Successfull POST  request :判断post请求的状态码,是不是在201和202这两个之中

//Postman源码
pm.test("Successful POST request", function () {
    pm.expect(pm.response.code).to.be.oneOf([201, 202]);
});

3.7.总结

成功的post请求状态码,判断该请求状态码是不是在201和202这两个之中

因为在post请求中存在响应码是201和202或者200的时候都是表示成功只是代表的具体含义不同,这里和断言响应码是不是200有相似之处,不同的地方在于这里断言的是to.be.oneOf([list]),看响应码是不是在这个list里面,多了一个范围

状态码:200(请求成功成功的含义,取决于HTTP方法如POST:描述动作结果的资源在消息体中传输)
状态码:201(该请求已成功,并因此创建了一个新的资源。通常源于POST或某些PUT请求。)
状态码:202(该请求已被接受进行处理,但是处理尚未完成。最终有可能会被处理,也可能不会处理。) 

五、自定义动态参数(全局变量)断言的方式:精确断言

参考文档:

Postman内置动态参数和自定义的动态参数以及断言方式_沫沫1890S的博客-CSDN博客

pm.globals.get("time")

globals["time"]

globals.time

备注:上图断言中拼接的+pm.globals.get("time")可直接替换成globals["time"] 或 globals.time

在Postman中断言也属于比较重要的一块内容,因为关系到如何准确的判断我们测试的接口是否达到我们的期许和要求,断言脚本语言除了系统自带的一部分外还有很多可以灵活自己编写的,在不断的学习中还会不断的总结。

  • 2
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Postman常用断言包括状态码断言、响应正文断言(包含文本、JSON字段)、响应头断言和响应时间断言等。 状态码断言用于验证接口返回的HTTP状态码是否符合预期。可以通过在测试脚本中使用`pm.response.to.have.status(statusCode)`来实现,其中`statusCode`是预期的状态码。 响应正文断言是用来验证响应正文中的内容是否符合预期。可以使用不同的方法进行断言,比如: - 包含断言:使用`pm.expect(responseBody).to.include(expectedText)`,其中`responseBody`是响应正文,`expectedText`是预期的文本内容。 - JSON字段断言:使用`pm.expect(jsonData.property).to.eql(expectedValue)`,其中`jsonData.property`是响应正文中的JSON字段,`expectedValue`是预期的值。 响应头断言用于验证响应头中的信息是否符合预期。可以使用`pm.response.to.have.header(headerName, expectedValue)`来实现,其中`headerName`是预期的响应头名称,`expectedValue`是预期的值。 响应时间断言用于验证接口的响应时间是否在预期范围内。可以使用`pm.expect(duration).to.be.below(maximumDuration)`来实现,其中`duration`是接口的实际响应时间,`maximumDuration`是预期的最大响应时间。 这些断言可以帮助我们验证接口的正确性和稳定性,确保接口的返回结果符合预期。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [postman7种断言的使用](https://blog.csdn.net/qq_43479892/article/details/127171379)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Postman-win64-Setup.rar](https://download.csdn.net/download/dengjin20104042056/88026048)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沫沫18S

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值