使用Node.js实现Postman接口测试自动验签

背景

  • 某业务服务端接口有验签逻辑、Postman调用接口自测加签麻烦
  • 需要服务端多个环境域名切换测试
  • 服务端接口部分需要登录后测试

Pre-request Script简介

Postman 有一个基于 Node.js 的强大运行时,它允许我们向请求和集合中添加动态行为。允许我们编写 API 测试、构建可以包含动态参数的请求、在请求之间传递数据等等。可以添加两种情况下的 JavaScript 代码:

  1. 在请求发送到服务器之前,在“Pre-request Script”选项卡中编写预请求脚本;
  2. 收到响应后,在Test”选项卡中编写测试脚本。

脚本的执行顺序

在 Postman 中,单个请求的脚本执行顺序如下所示:

  • 预请求脚本将在发送请求之前执行;
  • 测试脚本将在发送请求后执行;

image-20231026154058794

对于集合中的每个请求,脚本将按以下顺序执行:

  • 与集合关联的预请求脚本将在集合中的每个请求之前运行。
  • 与文件夹关联的预请求脚本将在文件夹中的每个直接子请求之前运行。
  • 与集合关联的测试脚本将在集合中的每个请求之后运行。
  • 与文件夹关联的测试脚本将在文件夹中的每个直接子请求之后运行。

image-20231026154414512

操作步骤

加签

  • 可以针对一个collection统一编写一个前置脚本

    image-20231030165919217

  • 在Pre-request-script处编写前置脚本

    image-20231030170107039

    使用javascript语句实现加签逻辑,在适当位置可以打印日志

    • 打开postman console查看加签结果

image-20231030170501735

已经加签成功

多环境切换

  • 一个接口同时多个域名或环境测试,使用Postman的Environments功能实现

  • 首先定义环境变量

    目前有test和prod两个环境变量,可以定义两个环境

    image-20231030170543174

  • 定义具体的Variable

在这里我们定义变量为host,分别配置好test和prod的环境变量

image-20231030170648208

  • 使用variable

在链接中直接使用postman语法{{key}}使用定义好的变量

image-20231030170822353

  • 切换环境变量达到目的

image-20231030171244350

登录后接口访问

  • 业务部分接口需要登录后访问,需要在header处增加jwttoken完成权限验证

  • 使用Postman的Tests功能实现header自动填充

  • 定义jwtToken变量

    在环境变量处定义变量即可

    image-20231030170935249

  • 在登录接口编写Tests脚本

拿到响应结果并设置于环境变量中

image-20231030171009410

然后在接口中使用变量

image-20231030171106109

然后然后调用登录接口完成变量填充

作者介绍

  • 张博文 高级服务端开发工程师

微鲤技术团队

微鲤技术团队承担了中华万年历、Maybe、蘑菇语音、微鲤游戏高达3亿用户的产品研发工作,并构建了完备的大数据平台、基础研发框架、基础运维设施。践行数据驱动理念,相信技术改变世界。