Postman教程-Pre-request Script和Tests脚本进阶

简介: 介绍一下在postman中,一些脚本的常见用法:responseBody pm.response pm对象 pm.sendRequest对象

下面介绍一下在postman中,一些脚本的常见用法:

  • responseBody

等价于response.text,表示接口请求的响应体,类型为string,如果返回的字符串是json格式的,可以使用JSON.parse()进行解析。

curl --location --request POST 'http://8.129.162.225:8082/account/login?username=demo&password=demo'
var type = typeof responseBody  // 得到的值是string类型
var res = JSON.parse(responseBody)   
console.log( type,res.msg,res.data.token)

微信图片_20220114120623.png


  • pm.response

等价于response对象,包含Body、Code、Status、Cookies、Headers等内容。


  • 响应结果断言
// 检查接口请求的状态是否为200
pm.test("请求状态码验证", function () {
    pm.response.to.have.status(200);
});
// 检查接口响应结果中的内容是否正确(返回json时)
pm.test("返回结果内容断言", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.msg).to.eql('成功');
    pm.expect(jsonData.code).to.eql(20000 );
});
// 其他方法:
 pm.response.to.have.status(code:Number)
 pm.response.to.have.status(reason:String)
 pm.response.to.have.header(key:String)
 pm.response.to.have.header(key:String, optionalValue:String)
 pm.response.to.have.body()
 pm.response.to.have.body(optionalValue:String)
 pm.response.to.have.body(optionalValue:RegExp)
 pm.response.to.have.jsonBody()
 pm.response.to.have.jsonBody(optionalExpectEqual:Object)
 pm.response.to.have.jsonBody(optionalExpectPath:String)
 pm.response.to.have.jsonBody(optionalExpectPath:String, optionalValue:*)

在pm.test()中写入的名称,在测试报告中和输出的时候会体现是哪个环节的校验结果,添加类似jenkins中pipeline的这种step的描述的话,有助于在报告中体现的会更加详细,知道具体是哪一种断言不通过,Test Results中的显示如下:


微信图片_20220114120627.png


  • pm对象

pm对象在浏览器中使用网页版以及桌面版都可以使用。(书上说浏览器插件无法使用,应该是以前低版本不支持,现在浏览器搜不到那个插件了,可以直接打开网页使用:https://web.postman.co/home

pm.info.eventName:用来获取当前是在Pre-request Script还是Tests中执行的脚本,返回的是字符串“prerequest” 或 “test”。


微信图片_20220114120629.png


pm.info.iteration:它用来显示当前运行迭代的次数(从0开始)

pm.info.iterationCount:返回迭代运行的总次数

pm.info.requestName:用于返回请求名,对应postman上请求的名称

pm.info.requestId:用于返回请求ID


  • pm.sendRequest对象

允许异步发送HTTP/HTTPS请求。

① 该方法接受一个兼容SDK的请求和一个回调。回调接收两个参数,其中一个错误(如果有的话),另一个是SDK兼容的响应。

② 该方法可以在预请求或测试脚本中使用。

// 以普通字符串URL为例
  pm.sendRequest('https://postman-echo.com/get', function (err, res) {
      if (err) {
          console.log(err);
      } else {
          pm.environment.set("variable_key", "new_value");
      }
  });
// 使用完整的SDK请求为例
  const echoPostRequest = {
    url: 'https://postman-echo.com/post',
    method: 'POST',
    header: 'headername1:value1',
    body: {
      mode: 'raw',
      raw: JSON.stringify({ key: 'this is json' })
    }
  };
  pm.sendRequest(echoPostRequest, function (err, res) {
    console.log(err ? err : res.json());
  });
  // pm.test只能在Tests选项卡下使用
  pm.sendRequest('https://postman-echo.com/get', function (err, res) {
    if (err) { console.log(err); }
    pm.test('response should be okay to process', function () {
      pm.expect(err).to.equal(null);
      pm.expect(res).to.have.property('code', 200);
      pm.expect(res).to.have.property('status', 'OK');
    });
  });

环境变量、变量相关的操作

pm.globals对象包含以下方法可供调用:
  pm.globals.has(variableName:String) → boolean
  pm.globals.get(variableName:String) 
  pm.globals.set(variableName:String, variableValue:String)
  pm.globals.unset(variableName:String)
  pm.globals.clear()
  pm.globals.toObject() 
pm.environment对象包含以下方法可供调用:
  pm.environment.has(variableName:String) → boolean
  pm.environment.get(variableName:String) 
  pm.environment.set(variableName:String, variableValue:String)
  pm.environment.unset(variableName:String) 
  pm.environment.clear() 
  pm.environment.toObject() 
pm.variables对象:
   pm.variables.get(variableName:String)
在使用的时候,要注意变量的优先级,尽量不要在全局变量、环境变量、
集合脚本中出现命名相同的变量。
  • 其他脚本介绍

pm.request与pm.response :请求与响应信息,打印这两个对象可以看到请求和响应的具体参数之类的。

pm.iterationData对象:包含数据集运行期间提供的数据文件

pm.cookies对象:cookies的相关信息


  • pm.response.to.be.*  可以通过预定义的规则直接断言
pm.response.to.be.info,检查响应码是否为1××,如果是则断言为真,否则为假。
pm.response.to.be.success,检查响应码是否为2××,如果是则断言为真,否则为假。
pm.response.to.be.redirection,检查响应码是否为3××,如果是则断言为真,否则为假。
pm.response.to.be.clientError,检查响应码是否为4××,如果是则断言为真,否则为假。
pm.response.to.be.serverError,检查响应码是否为5××,如果是则断言为真,否则为假。
pm.response.to.be.error,检查响应码是否为4××或者5××,如果是则断言为真,否则为假。
pm.response.to.be.ok,检查响应码是否为200,如果是则断言为真,否则为假。
pm.response.to.be.accepted,检查响应码是否为202,如果是则断言为真,否则为假。
pm.response.to.be.badRequest,检查响应码是否为400,如果是则断言为真,否则为假。
pm.response.to.be.unauthorized,检查响应码是否为401,如果是则断言为真,否则为假。
pm.response.to.be.forbidden,检查响应码是否为403,如果是则断言为真,否则为假。
pm.response.to.be.notFound,检查响应码是否为404,如果是则断言为真,否则为假。
pm.response.to.be.rateLimited,检查响应码是否为429,如果是则断言为真,否则为假。


以上脚本可以直接单独使用某一行就行,运行后直接具备断言的效果,会直接在报告中体现是成功还是断言失败:


微信图片_20220114120632.png

相关文章
|
2月前
|
人工智能 数据可视化 测试技术
Postman 性能测试教程:快速上手 API 压测
本文介绍API上线后因高频调用导致服务器告警,通过Postman与Apifox进行压力测试排查性能瓶颈。对比两款工具在批量请求、断言验证、可视化报告等方面的优劣,探讨API性能优化策略及行业未来发展方向。
Postman 性能测试教程:快速上手 API 压测
|
4月前
|
JSON JavaScript 测试技术
用Postman玩转电商API:一键测试+自动化请求教程
Postman 是电商 API 测试的高效工具,涵盖基础配置、自动化测试、环境管理与请求自动化,助你快速提升开发效率。
|
2月前
|
测试技术 API 开发者
Postman 旧版本下载方法全解(图文教程)
本文详解如何下载Postman历史版本,涵盖卸载当前版本、查找官方发布记录及旧版下载链接,并探讨版本管理痛点,引出Apifox等集成化接口测试工具的优势,助力开发测试更高效。
Postman 旧版本下载方法全解(图文教程)
|
6月前
|
数据采集 运维 API
把Postman调试脚本秒变Python采集代码的三大技巧
本文介绍了如何借助 Postman 调试工具快速生成 Python 爬虫代码,并结合爬虫代理实现高效数据采集。文章通过“跨界混搭”结构,先讲解 Postman 的 API 调试功能,再映射到 Python 爬虫技术,重点分享三大技巧:利用 Postman 生成请求骨架、通过 Session 管理 Cookie 和 User-Agent,以及集成代理 IP 提升稳定性。以票务信息采集为例,展示完整实现流程,探讨其在抗封锁、团队协作等方面的价值,帮助开发者快速构建生产级爬虫代码。
223 1
把Postman调试脚本秒变Python采集代码的三大技巧
|
7月前
|
数据可视化 测试技术 API
Postman 是什么?(新手教程)
什么是 Postman?本文将对 Postman 进行全面介绍,让我们开始吧。
|
11月前
|
JSON JavaScript 测试技术
Postman 使用教程:从基础到高级
Postman是一款强大的API开发和测试工具,支持从基础请求发送到复杂API集成。本文详细介绍了Postman的基础使用,包括安装、界面概览、发送请求、设置请求头等,以及高级功能,如使用环境变量、创建请求集合、编写测试脚本及使用Newman进行命令行测试,帮助用户全面掌握Postman的使用技巧。
4666 28
Postman 使用教程:从基础到高级
|
JSON 测试技术 API
Postman 教程:快速入门与进阶技巧
本系列教程旨在帮助你从零开始,逐步掌握 Postman 的各项功能,从基础的请求发送到高级的自动化测试和团队协作。无论你是初学者还是有一定经验的开发者,都能在这里找到你需要的知识和技巧。每一篇教程都配有详细的图文说明,确保你能够轻松上手并迅速提升技能。
|
XML Web App开发 数据挖掘
Postman接口测试工具全解析:功能、脚本编写及优缺点探讨
文章详细分析了Postman接口测试工具的功能、脚本编写、使用场景以及优缺点,强调了其在接口自动化测试中的强大能力,同时指出了其在性能分析方面的不足,并建议根据项目需求和个人偏好选择合适的接口测试工具。
591 1
|
JavaScript 测试技术 API
Postman教程-Pre-request Script和Tests脚本的介绍
Pre-request Script脚本的使用场景:一般用来在发送请求之前对数据进行一些预处理,比如获取当前时间戳、随机数之类的用于接口传参。
Postman教程-Pre-request Script和Tests脚本的介绍
|
10月前
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
下一篇
oss云网关配置