
预处理脚本(Pre-request script)
断言脚本(Tests script)
请求之前添加的脚本,我们称为预处理(Pre-request Script) ,预处理脚本与Jmeter的前置处理器类似,主要作用就是一些初始化的功能
请求本身的问题,但是“请求前后的动作”是怎么处理的?
比如在发送一个请求前,需要获取当前系统时间戳,这就需要用到Pre-request Script的知识。请求返回响应结果后,如何自动判断响应是否正确?这就需要用到Tests的知识。
postman支持javascript,允许测试人员给请求和集合添加动态行为,通过使用javascript脚本,可以构建包含动态参数的请求,在请求之间传递数据。可以在下面两个事件流中添加javascript脚本。
1、在请求发送前,添加作为“Pre-request Script”选项下的预处理脚本
2、在收到响应后,添加测试脚本进行断言、流程控制
可以将预处理和测试脚本添加到一个集合、一个文件、一个请求中。
1、为集合添加脚本
2、为文件添加脚本
3、为请求添加脚本
在Postman中,单个请求的脚本执行顺序如图
1、与请求相关联的预请求脚本将在请求发送之前执行
2、与请求关联的测试脚本将在接收响应之后执行。
对于集合中的每个请求按顺序执行
1、与集合相关的预请求脚本将在集合中的每个请求之前运行
2、与文件夹相关联的预请求脚本将在文件夹中的每个请求之前运行。
3、与集合相关的测试脚本将在集合中的每个请求之后运行。
4、与文件夹关联的测试脚本将在该文件夹中的请求之后运行。
对于集合中的每个请求,脚本总是按照下面的层次结构运行:集合级脚本、文件夹级脚本、请求级脚本。此执行顺序适用于预请求和测试脚本。为了验证其正确性,可以创建这样一个集合,其中包含一个文件夹和两个请求。
2 测试脚本
预处理脚本,指在请求发送之前执行的脚本。如果想在请求发送时包含当前时间戳或者一个随机的字符,前端加密等,在这个场景下使用前置脚本。例如,要在请求头中包含一个时间戳,可以设置一个环境变量,其值从函数返回。
预处理脚本将被执行,并且timestampHeader的值将被赋值给变量{{timestampHeader}}。body中通过使用{{timestampHeader}}来传递变量。
Postman准备了常用脚本实例,这些脚本能够满足大多数接口测试的需求,接下来,一起认识一下它们,Postman在右侧区域列出了常用脚本。
演试案例:
准备接口
打开“Postman Console”
了解consolelog()
接口描述:
Postman Console窗口输出内容的顺序体现了脚本执行的顺序,Pre-request Script请求中的脚本先执行,然后才发送接口的请求
设置变量、获取变量值脚本
1、设置一个全局变量
pmglobalsset("variable_key", "variable_value");
2、设置一个环境变量
pmenvironmentset("variable_key", "variable_value")
3、获取一个全局变量
pmglobalsget("variable_key")
4、获取一个环境变量
pmenvironmentget("variable_key")
演试案例:
演试内容:Postman在右侧区域列出了常用脚本的演试
通过consolelog输出globals、environment当前的环境变量,Postman Console窗口的输出情况。
清除变量的脚本
1、清除一个全局变量
pmglobalsunset("variable_key")
2、清除一个环境变量
pmenvironmentunset("variable_key")
发送请求的脚本
1、发送一个请求
pmsendRequest()
响应之后添加的脚本,称为测试脚本(Tests Script),即断言脚本,测试脚本主要用于接口断言,类似LoadRunner工具中的检查点、Jmeter中的断言功能。需要使用javascript语言为每个请求编写测试脚本。
测试脚本相关方法:
1、检查响应体中是否包含一个字段
pmexpect(pmresponsetext())toinclude("指定的内容")
2、将xml格式额响应体转换程Json对象
varJson=xml2JSON(responseBody)
3、检查响应体等于一个字符串
pmresponsetohavebody("指定的内容")
4、检测响应体的JSON值
varJSON=pmresponseJSON();//将结果转换程json格式
pmexpect(JSONvalue)toeql(“目标数”);
5、检测响应体中包含某个header
pmresponsetohaveheader("Content-Type")
6、检查响应时间,要求小于100ms
pmexpect(pmresponseresponseTime)tobebelow(100);
7、要求该接口响应码为200
pmvariblesget("指定状态码")
8、要求响应状态中包含某个字符
pmresponsetohavestatus("OK")
9、要求status code符合某个条件
pmexpect(pmresponsecode)tobeoneOf([200,201,202])
关于postman测试脚本中接口返回结果比较复杂的断言,且需要对多个值进行断言的情况,通过一个示例说明。
假如该接口mock出参如下:
我们需要断言其中的多个字段,可如下断言:
设置环境变量
只需要填写左侧的参数就可以了,右侧的值是后面接口返回结果中要获取的数据给下一个接口使用的
在注册接口中的url下面中功能中一个Tests,进入设置参数
1、把返回结果解析成字典格式(这个需要接口本身返回的结果是json格式),并用一个参数接收;
2、获取返回值
3、设置成环境变量
在登录接口中使用注册接口返回的mobile_phone参数
使用前面获取的全局变量格式:{{全局变量名}}
实现依赖步骤:
1、注册接口页面要选中配置全局变量,再请求接口
2、如果设置没问题,请求成功后,全局变量这里能正常获取到注册接口返回的值
前情提要
作为测试工程师,在日常工作中遇到和三方对接的项目,三方开发进度不理想,导致无法进行联调测试,基于此,开始学习与了解mock服务
吸收
经过资料查询,实 *** 验证之后,汇总成如下自我理解:
1正常自己公司的项目里面,会有一个config文件,里面会配置相关第三方调用接口的地址:ip:port//,具体的URL中的path会统一在接口文档中给出,描述三方提供的接口信息,包括(接口说明、接口路径(path)、请求参数、返回数据格式等),具体项目中调用哪些三方接口,则在项目程序里再去规定。
2mock的意义,简单来说在于模拟第三方接口的返回,用于我们项目的前端调试,或者接口与接口之间的调用调试。
3基于此,我们可以使用postman工具的mock server功能,来模拟第三方接口,既然模拟了第三方的所有接口,那么我们在得到mock server的地址(IP2:port2)后,需要在自己项目的config文件中,把配置的第三方调用接口的地址(ip:port),修改成mock server的地址(IP2:port2)。这样程序在运行后,本来调用第三方的地址,才能够走到我们的mock server中,模拟我们配置好的接口返回的数据。
( 注 :1在测试完成后,项目上线之前,需要检查配置文件的地址,是否修改为正确的三方地址。2出于测试完整性,临时使用mock地址后,三方接口完成开发后,需要修改回正确的三方地址,进行联调测试)
4postman的mock server 使用步骤:
a注册postman账号
b可新建一个space来单独管理mock
d在环境变量里添加相应的变量,主要包括mock server 的服务地址(即:IP2:port2),以及属于自己账号下的api keys(获取方式需要登录postman官网)
e给mock server里添加相应的接口,并增加相应的EXAMPLE
fmock添加对应的接口后,因mock server是联网的,故不受内外网环境的限制,在任何网络环境下,都可配置你自己的mock server地址,进行测试。
以上就是关于PostMan进阶——测试脚本的编写全部的内容,包括:PostMan进阶——测试脚本的编写、postman实现接口依赖、使用postman的mock server等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)