Postman接口测试02-设置全局变量、参数传递、断言

news/2024/7/19 15:03:06 标签: postman, js, 接口测试, 参数传递, 断言

在能熟练使用postman运行接口请求后,会遇到一些问题。例如:

  • 我们的web网站一共有几十个接口,测试的时候如果要切换环境,这个时候要每个接口都要修改url的根路径,一个一个的改也太麻烦了;
  • 还有时候我们经常需要用到上一个接口的返回值,来作为下一个接口的数据来使用,要怎么把参数传递过去呢;
  • 作为接口测试的话,验证接口返回结果是否正确,需要断言来判定这个接口的运行结果是否符合期望,这个时候又该怎么做。

postman中,这些问题都有解决方案,下面跟我一起来看一下吧。
参考文档:(点击进入postman官方文档地址)

一、设置全局(环境)变量

  postman中可以设置全局和环境变量,以便可以存储一些例如:url、token值、测试参数等数据。
变量的设置,是通过key-value的形式来存储。
例如:url:http://test.baidu.com
变量的使用:通过{{变量key}}来调用关键字获取值
例如:{{url}},可以放在需要填写参数的任何位置。

如何创建变量:
  点击postman界面右边的齿轮,在弹窗中可以选择创建全局变量、导入变量文件、创建环境变量。
创建变量
添加变量:
  全局变量在创建后,任何时候都可以获取到,而环境变量只有在设置为当前环境时,才会获取到此环境中的变量。这个看个人需要来设置是全局变量还是环境变量,例如我把url、账号密码设为环境变量,因为有切换不同环境的需要。

添加全局变量:
添加全局变量
添加环境变量
添加环境变量
变量的引用:
  如图所示,是一个环境变量的设置和引用,当鼠标悬浮在我们引用的变量{{key}}上时,会显示当前变量的值。
变量的使用

二、参数传递断言

  在postman中有专门的代码区域,可以通过js代码语言来实现一些自定义操作。在Pre-request Script区域,是请求发送前的代码区,比如我们需要对密码进行md5加密后发送,就可以使用js中的方法先进行加密。在Tests区域中,可以通过获取返回参数的值进行断言断言失败的接口会显示为false结果。

如何进行参数传递
  比如支付接口,需要上一个下单接口返回的订单号来作为入参。
  这个时候,首先要在下单接口的Tests区域中,获取到返回数据的订单号,然后存储为全局变量;
  接着在支付接口中,入参中的订单号值填写为我们设置的全局变量,这样就实现了一次参数传递
代码区域演示
下面我们来看一下这些方法都该怎么写:

2.1变量的设置

这些方法是在postman中对全局(环境)变量的操作方法。

获取变量
获取全局变量:pm.globals.get(“variable_key”);
获取当前环境变量:pm.environment.get(“variable_key”);
获取普通变量:pm.variables.get(“variable_key”);

设置变量
设置全局变量:pm.globals.set(“variable_key”, “variable_value”);
设置当前环境变量:pm.environment.set(“variable_key”, “variable_value”);

清空变量值
清空当前环境变量:pm.environment.unset(“variable_key”);
清空全局变量:pm.globals.unset(“variable_key”);

2.2返回数据的判断

这里需要注意的是,网上有一些教程比较老了,例如这种形式的写法:
tests[“Status code is 200”] = responseCode.code === 200;
这样的写法官方文档中已经表示不推荐使用,而是推荐统一的js书写格式。

判断返回状态码
pm.test(“返回状态码为200”, function () {
  pm.response.to.have.status(200);
});

判断返回header中是否有“Content-Type”字段
pm.test(“Content-Type字段存在”, function () {
  pm.response.to.have.header(“Content-Type”);
});

判断接口返回内容匹配一个字符串
pm.test(“返回内容匹配字符串”, function () {
  pm.response.to.have.body(“response_body_string”);
});

判断返回参数中包含某个字符串
pm.test(“字符串包含在返回值中”, function () {
  pm.expect(pm.response.text()).to.include(“想要搜索的字符串”);
});

判断接口响应时间
pm.test(“接口响应时间小于200ms”, function () {
  pm.expect(pm.response.responseTime).to.be.below(200);
});

把responseBody转为json字符串
var Jsondata =JSON.parse(responseBody);

把xml格式返回转换为json格式
var jsonObject = xml2Json(responseBody);

获取并判断返回参数的值
//假设返回参数为:{“code” : 0}
pm.test(“断言code字段值是否为0”,function(){
  var jsonData = pm.response.json(); //创建一个变量,值为返回参数(json格式)
  pm.expect(jsonData.code).to.eql(0); //判断返回参数中code字段值为0
});


http://www.niftyadmin.cn/n/1431713.html

相关文章

Postman接口测试03-运行接口用例集collection,进行“性能测试”

在postman中,我们在一个collection中,可以根据模块、流程,来创建我们的测试用例集;如果想要整体的把所有流程全部跑一遍,就需要直接运行整个测试用例集合。 一、如何批量运行用例集 1.1选中一个测试集合进入运行界面…

接口自动化笔记01:ddt模块调用数据

简介 DDT模块主要用于遍历测试数据,在一个测试用例方法中,可以循环遍历入参的所有数据组情况。 适用情况:当测试一个接口,不同的测试入参数据组合时,比如登录接口,需要验证不同的情况(账号错误…

接口自动化笔记02:使用递归获取多层字典的任意层级值

问题 为什么会使用到递归,是在做接口自动化的时候,我把yaml文件作为数据配置的存储,例如:账号、密码、地址等 自动化项目中的数据分离   我读取到的yaml是一个字典,每次都要按照从最外层级来开始定位获取值&#xff…

termux基础入门:论如何在手机上学习linux

一、关于termux 目录 一、关于termux 1.1起因: 1.2termux是什么: 1.3应用: 二、termux初体验 2.1下载termux 2.2基础使用 2.3一些有趣的软件库 三、termux的进阶使用 3.1下载并且使用vim编辑器 3.2 编辑启动界面问候语 3.3更换…

从零开始的OpenWRT编译

最近在捣鼓一台旧的路由器,由于一直靠在论坛用别人自己编译的固件,且各个固件都有所好处,所以决定自己编译一个最合适自己的固件 首先是准备工作 sudo apt-get update sudo apt-get install -y git-core build-essential libssl-dev libn…

自用的openwrt安装后续工作

首先是usb热拔插自动挂载 编辑 /etc/hotplug.d/block/10-mount #!/bin/ash case "$ACTION" inadd)for i in $(ls /dev/ | grep sd[a-z][1-9])domkdir -p /mnt/$imount -o iocharsetutf8,rw /dev/$i /mnt/$iif [ $? -ne 0 ]thenmount -o rw /dev/$i /mnt/$ifidone;…

安卓手机的神器--Termux 个人使用全纪录

在为路由器编译python3.6失败后,我把目光转向了手机,因为在早期就接触过某个终端神器--termux,所以最近突然想到可以用手机端挂py脚本 1.ssh连接到手机端 首先就是安装termux了,这个酷安就有 1.安装全局root权限(这…

feralhosting饭盒通过deluge+flexget实现全自动刷PT

上一次购买fh的盒子使用的是Transmissionflexget的组合,但是在使用独服一会后发现delugeltconfig的性能着实强大,所以近期购入饭盒的ssd盒子并准备刷一波数据 不过要注意的是,请看清楚你需要刷的站是否有针对盒子的限制,饭盒是共…