2020 软件测试 Postman高级使用——Tests 断言校验返回结果
文章目录
- 1、引言
- 2、对接口进行Tests测试
- 3、简单实例测试(检查百度搜猫返回请求情况)
- 4、环境变量管理使用
- 5、实例二:将微信获取token的返回值提取token出来,在后面的接口中进行引用
- 6、正则表达式使用(以获取微信的token为例)
- 7、提出问题①(关于百度在不同环境访问问题):
- 8、提出问题②(关于请求头封装隐藏问题)
1、引言
Postman的test本质上是JavaScript代码,通过我们编写测试代码,每一个tests返回True,或是False。
每一个tests实际上就是一个测试用例
2、对接口进行Tests测试
Tests断言:比较预期结果和实际结果
(编辑文本采用js语言,对于初学者来说可以直接点击右边的系统自带配置js)
引用变量{{变量名称}}
比如搜猫,那么我们就选择Response body:Contains string
pm.test("Body matches string", function () {pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
pm.test("检查返回内容是否正确", function () {pm.expect(pm.response.text()).to.include("<titile>猫_百度搜索</titile>");
});
- 附百度搜猫抓过来的接口Url
http://www.baidu.com/s?wd=猫
- 附JSON在线视图查看器
http://www.bejson.com/jsonviewernew/
3、简单实例测试(检查百度搜猫返回请求情况)
//1、检查返回值
pm.test("检查返回内容是否正确", function () {pm.expect(pm.response.text()).to.include("<title>猫_百度搜索</title>");
});
//2、检查状态码
pm.test("检查状态码", function () {pm.response.to.have.status(200);
});
//3、检查响应时间
pm.test("检查响应时间小于300ms", function () {pm.expect(pm.response.responseTime).to.be.below(300);
});
- 显示结果
- ps:检查响应时间会因网速而发生变化,返回Fail有时是正常的
4、环境变量管理使用
//1、检查返回值
pm.test("检查返回内容是否正确", function () {pm.expect(pm.response.text()).to.include("<title>猫_百度搜索</title>");
});
//2、检查状态码
pm.test("检查状态码", function () {pm.response.to.have.status(200);
});
//3、检查响应时间
pm.test("检查响应时间小于300ms", function () {pm.expect(pm.response.responseTime).to.be.below(300);
});
//4、获取状态码
var code=responseCode.code;
//5、设置全局变量
pm.globals.set("codename", code);
- 通过js脚本我们获取状态码后,存在一个全局变量codename里面,然后我们打开环境变量管理进行查看,如下:
5、实例二:将微信获取token的返回值提取token出来,在后面的接口中进行引用
- ① 在Tests中进行脚本测试
//1、获取jsonData数据包
var jsonData=JSON.parse(responseBody);
//2、通过json包获取对应字段名access_token
var token=jsonData.access_token;
//设置token全局变量
pm.globals.set("myToken",token);
- ② 查看环境变量管理内容如下:
6、正则表达式使用(以获取微信的token为例)
- 上面那个获取脚本的方式其实是有一个缺点的,那种方式只能获取一个JSON格式的值,而当我们切换类型后就没办法获取了,所以我们可以采用更好一点的方法,正则表达式
var token=responseBody.match(new RegExp('\access_token\":\"(.+?)\"'))[1];
pm.globals.set("weixin_token",token);
7、提出问题①(关于百度在不同环境访问问题):
当我们访问百度时,可以通过网址进行访问,也可以通过IP地址进行访问,那么我们切换不同的环境时,如何让它们都能用呢?
- ① 如何查看百度的IP地址呢?
首先WIN+R 进入cmd
然后输出以下命令:nslookup www.baidu.com
于是我们能查看到如下内容(每个电脑的显示界面可能不一样)
通过查看,我们就能得到百度的三种环境:生产环境、测试环境、预发布环境
www.baidu.com 生产环境
IP地址:
183.232.231.172 测试环境
183.232.231.174 预发布环境
- ②公司的环境有哪些?
开发环境:开发人员用来编码调试
测试环境:测试人员找bug
预发布环境:模拟的真实环境
生产环境:用户真实使用的
PS:那么我们将主机设置为全局变量,这样我们对于不同的环境都能够使用,此时我们打开Postman,进入之前的环境变量管理,点击Add然后添加这三个环境,注意我们的环境变量名称要统一
1、测试环境配置
2、生产环境配置
3、预发布环境配置
8、提出问题②(关于请求头封装隐藏问题)
- ①提取返回值(正则表达式、json)
- ②环境变量的设置
- ③修改请求头
- ④参数化循环取值
之前各个环境配置好了之后,我们发送send请求后,打开我们的Fiddler工具查看我们的请求头,发现在User-Agent会直接显示我们的Postmanxxx,这样的接口肯定会出问题的,我们应该如何进行隐藏封装呢?
很简单,就是我们直接去访问百度,去拿到百度的Headers的信息就好了,然后去修改我们自己接口的key-value值
下面是我从百度拷下来的Headers,可以直接使用
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36
然后在接口那选择Headers,采用文本方式直接复制过去即可
PS:我们这里是引用了全局变量baiduUrl,是之前配置的三个环境的变量名称
那么现在我们的Headers请求头就封装好了,我们再send一下,采用预发布环境试试~
结果很显然,修改成了百度的请求头了,说明隐藏成功!
学如逆水行舟,不进则退
2020 软件测试 Postman高级使用——Tests 断言校验返回结果相关推荐
- Postman系列之Tests断言
------·今天距2021年276天·------ 这是ITester软件测试小栈第104次推文 在上一篇:Collections集合管理,主要介绍了如何新建Collections.新建Folder ...
- 2020 软件测试实训记录 【整理】 目录
文章目录 1.引言 2.软件测试基础 3.Fiddler+Postman接口自动化测试 1.引言 2.软件测试基础 2020 软件测试 软件缺陷知识[整理] 2020 软件测试 常见缺陷处理场景及软测 ...
- 【4】Postman之Tests(断言)
简介:使用postman完成请求后,验证返回结果,会用到tests断言.官方提供了很多可以直接使用的方法~ 接下来主要介绍这些方法是如何使用. 1. 变量相关: Get an environment ...
- Postman高级应用——流程控制、调试、公共函数、外部数据文件
postman客户端下载地址:https://www.getpostman.com/apps 流程控制 流程控制简言之就是设置接口的执行顺序,流程控制只有在collection runner或Newm ...
- Postman高级应用(5):再也不用注释签名代码了——自动生成签名
场景 我们在写服务端接口时候,往往需要考虑安全问题,最基本的一点就是接口需要按照约定的规则进行签名校验.一旦接口校验签名,就意味着我们用Postman不能想以前那样顺利的测试了,服务端必定会返回签名失 ...
- 2020电工(高级)考试题库及电工(高级)模拟考试题
题库来源:安全生产模拟考试一点通公众号小程序 2020电工(高级)考试题库及电工(高级)模拟考试题,包含电工(高级)考试题库答案解析及电工(高级)模拟考试题练习.由安全生产模拟考试一点通公众号结合国家 ...
- 绝对是最实用 PostMan测试进阶操作 token校验 参数传递 存为环境变量 避免重复copy
绝对是最实用 PostMan测试进阶操作 token校验 参数传递 存为环境变量 免重复copy 之前学的少,大都自己用junit 测试一遍就可以,不怎么会去用postman测试. 但是此次和队友一起 ...
- 2020软件测试学习自学路线分享,附完整资料,绝对有用哟
2020软件测试学习路线图,内附自学路线+视频+工具经验+面试篇 划重点!!! 资源链接:黑马程序员社区 想毕业后做测试相关的工作的,找学习资源找的头大,还好终于找到这么优质的可以系统地学习测试知识的 ...
- 软件测试行业未来发展趋势 2020软件测试行业现状及市场前景规模分析
2020软件测试行业发展现状及市场前景规模分析 软件测试(英语:SoftwareTesting),描述一种用来促进鉴定软件的正确性.完整性.安全性和质量的过程.换句话说,软件测试是一种实际输出与预期输 ...
最新文章
- php的闭包函数use的使用
- 蓝桥杯:安慰奶牛(最小生成树)
- C++ vector用法 基本用法
- js随机生成4位验证码
- python spangt_python怎么爬去spanlt;/span中间标签的内容
- HttpClient4.5使用RequestConfig配置连接信息
- 如何将字符串数组的空格去除_java中如何将数组转换为List
- IIS7部署网站的一些细节问题。
- 各主流浏览器的JS执行能力测试
- Visual Studio 2008 安装失败(“Web 创作组件”)安装失败
- 高质量实时渲染课程笔记(一)——介绍和概览(高质量实时渲染的含义、学习前置、涉及的内容目录、发展史)
- 【Analytics Kit】【FAQ】集成华为分析服务问题集合 SDK初始化失败/应用调试界面没有数据/常见错误提示
- Extjs实现角色权限流控制,对fieldset,checkbox的动态控制
- 不再有“寒冬”的人工智能
- 计算机语言phal语言,phalapi
- 使用paython制作简单贺卡
- Canvas 原生实现图片涂抹打马赛克功能
- qcom 音频相关的dsp driver笔记(基于msm8996平台)
- 计算机网络-数据交换技术
- 蓝牙协议(bluetooth spec)