Postman进阶篇(四)-Test script入门及校验接口返回值

Postman中Pre-request Script是在请求之前执行的脚本,与之相对的是在请求结果返回之后执行的测试脚本(Test script)。
本篇文章代码均由JavaScript编写

1、概述
  • 在专栏之前的文章介绍过Pre-request Script脚本,Test Script 脚本的执行的时机是在请求结果返回之后,在postman中是与Pre-request Script相对的存在。
    (Pre-request Script详细介绍请看之前文章:
    Postman进阶篇(一)-pre-request script
  • 但Test Script脚本却不叫 “after-response Script”,因为它更大的作用是在校验接口返回结果上。
  • 因为有了Test Script脚本,使得postman达到了成为一个接口自动化脚本的一半条件。
    (专栏之后的文章会介绍postman中的另一个工具“Runner”,它是postman成为接口自动化工具的另一半条件)
2、编写Test Script(测试脚本)
  • 在postman中,允许访问响应对象。
  • 可以在测试脚本中为测试对象的元素设置预期值,符合预期值则为通过测试。
  • 反之,测试结果失败。

示例
以论坛搜索框的获取热搜词的接口为例,假设要校验接口响应的状态码为200:
在这里插入图片描述
检验接口请求状态码为200,完整代码:

pm.test("校验返回结果状态码是否为200", function () {
    pm.response.to.have.status(200);
});
  • pm.test方法是postman内置方法,可以用来断言测试结果,返回值为布尔值(true或false) 。
  • 这里可以传两个参数,第一个参数为该断言的名称,这个名称之后也会显示在响应结果栏。
  • 第二个参数为断言的方法。
pm.test("", function () {});
  • 以下为断言的方法,这句代码的意思是在返回结果(pm.response)中是否含有(.to.have)状态码200(.status(200))
pm.response.to.have.status(200);
  • 将完整代码放入请求报文部分的Test Script标签页下:

在这里插入图片描述

  • 点击发送,断言的结果也会显示在返回结果部分,“Test Results”标签页下
  • 当前接口返回正常,状态码为200,所以断言也是“PASS”的状态。

在这里插入图片描述

  • 如果测试结果失败的话,比如我把状态码改为是否等于500,就是这样:
pm.test("校验返回结果状态码是否为500", function () {
    pm.response.to.have.status(500);
});

在这里插入图片描述

  • 此时测试结果失败了,在“Test Results”显示了测试结果为“FALL”(结果当然给是失败了,不然该怀疑论坛服务器是不是出问题了= =)
  • 同时,也给出了错误原因“AssertionError: expected response to have status code 500 but got 200”,意思为“预期返回结果状态码为500,但实际是200”

最后,测试脚本中支持添加任意数量的key,具体取决于要测试的内容。

3、Test Script常用方法
  • 测试脚本与预请求脚本一样,在标签页的右侧列出了常用方法,点击之后直接生成语句打印在标签页编辑框内。

在这里插入图片描述

  • 前半部分与Pre-request Script一样,是操作变量相关及发送接口请求的方法,后半部分则为Test Script专有的校验返回结果的方法。

下面按顺序逐个说明:

  1. 检验接口请求状态码为200:

在这里插入图片描述

pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
  1. 检验接口返回body中包含某字符串

在这里插入图片描述

pm.test("Body matches string", function () {
  pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
  1. 检验接口返回body(json格式)中某个参数等于预期值

在这里插入图片描述

pm.test("Your test name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.value).to.eql(100);
});
  1. 检验接口返回body等于某字符串

在这里插入图片描述

pm.test("Body is correct", function () {
    pm.response.to.have.body("response_body_string");
});
  1. 检查Content-Type是否包含在header返回

在这里插入图片描述

pm.test("Content-Type is present", function () {
    pm.response.to.have.header("Content-Type");
});
  1. 检验接口返回的时间少于200ms

在这里插入图片描述

pm.test("Response time is less than 200ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(200);
});
  1. 检验post接口请求成功或接口返回状态码为201、202中的一个

在这里插入图片描述

pm.test("Successful POST request", function () {
    pm.expect(pm.response.code).to.be.oneOf([201, 202]);
});
  1. 检验接口状态码包含某字符串

在这里插入图片描述

pm.test("Status code name has string", function () {
    pm.response.to.have.status("Created");
});
  1. 将XML格式的response转换为json格式

在这里插入图片描述

var jsonObject = xml2Json(responseBody);

10.json结构验证,批量验证json内每个参数类型符合预期类型
在这里插入图片描述

var schema = {
    "items": {
        "type": "boolean"
    }
};

var data1 = [true, false];
var data2 = [true, 123];

pm.test('Schema is valid', function () {
    pm.expect(tv4.validate(data1, schema)).to.be.true;
    pm.expect(tv4.validate(data2, schema)).to.be.true;
});
4、实例校验接口返回值
  • 还是以上面的热搜词接口为例,观察返回结果,“size”的值是“items”列表返回的数据总数(我猜应该是这样),即“size”的值应该等于“items”的长度
    在这里插入图片描述
  • 把“size”的值应该等于“items”的长度写为一条测试:
pm.test("items长度等于size", function () {
    var size = pm.response.json()["data"]["size"]; //获取size的value
    var items_len = pm.response.json()["data"]["items"].length //获取items的长度
    pm.expect(items_len).to.eql(size); // size值应该等于items的长度
});
  • 发送接口,“Test Results”标签页显示测试通过。
    在这里插入图片描述

postman系列文章目录:
https://blog.csdn.net/weixin_40883833/article/details/126452017
—————————————————————————————————
postman系列文章内所使用的示例文件已经上传到了本人运营公众号【软件测试必备技能】
在这里插入图片描述
有需要可点击文章下发二维码,前往领取~
在这里插入图片描述

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

软件测试必备技能

有钱捧个钱场,没钱捧个人场

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

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

打赏作者

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

抵扣说明:

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

余额充值