⑴ PostMan进阶——测试脚本的编写
预处理脚本(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”
了解console.log()
接口描述:
Postman Console窗口输出内容的顺序体现了脚本执行的顺序,Pre-request Script请求中的脚本先执行,然后才发送接口的请求
设置变量、获取变量值脚本
1、设置一个全局变量
pm.globals.set("variable_key", "variable_value");
2、设置一个环境变量
pm.environment.set("variable_key", "variable_value")
3、获取一个全局变量
pm.globals.get("variable_key")
4、获取一个环境变量
pm.environment.get("variable_key")
演试案例:
演试内容:Postman在右侧区域列出了常用脚本的演试
通过console.log输出globals、environment当前的环境变量,Postman Console窗口的输出情况。
清除变量的脚本
1、清除一个全局变量
pm.globals.unset("variable_key")
2、清除一个环境变量
pm.environment.unset("variable_key")
发送请求的脚本
1、发送一个请求
pm.sendRequest()
响应之后添加的脚本,称为测试脚本(Tests Script),即断言脚本,测试脚本主要用于接口断言,类似LoadRunner工具中的检查点、Jmeter中的断言功能。需要使用javascript语言为每个请求编写测试脚本。
测试脚本相关方法:
1、检查响应体中是否包含一个字段
pm.expect(pm.response.text()).to.include("指定的内容")
2、将xml格式额响应体转换程Json对象
varJson=xml2JSON(responseBody)
3、检查响应体等于一个字符串
pm.response.to.have.body("指定的内容")
4、检测响应体的JSON值
varJSON=pm.response.JSON();//将结果转换程json格式
pm.expect(JSON.value).to.eql(“目标数”);
5、检测响应体中包含某个header
pm.response.to.have.header("Content-Type")
6、检查响应时间,要求小于100ms
pm.expect(pm.response.responseTime).to.be.below(100);
7、要求该接口响应码为200
pm.varibles.get("指定状态码")
8、要求响应状态中包含某个字符
pm.response.to.have.status("OK")
9、要求status code符合某个条件
pm.expect(pm.response.code).to.be.oneOf([200,201,202])
关于postman测试脚本中接口返回结果比较复杂的断言,且需要对多个值进行断言的情况,通过一个示例说明。
假如该接口mock出参如下:
我们需要断言其中的多个字段,可如下断言:
⑵ PB 模拟 httpclient 发送消息请求的API 求帮助
INET控件可以模拟向INTERNET以GET或POST形式发送请求,并且可能得到请求返回的页面内容,它需要与INTERRNETESULT控件使用.这两个控件都是不可视的,帮助文件写得并不很详细,正确使用这两个控件需要先对这两个控件派生两个标准类,再程序中再实例化使用.
NEW一个STANDARD CLASS,选择INET,保存成n_inet
NEW一个STANDARD CLASS,选择INTERNETRESULT,在INTERNETDATA函数中写上 messagebox('返回结果',string(data)),保存成n_ir
下面就试下,如下脚本
n_inet ln_inet
n_ir ln_ir
ln_inet = create n_inet
ln_ir = create n_ir
integer li_ret
li_ret = n_inet.geturl('http://www.china-puer.cn/list.asp?id=1450',ln_ir)
if li_ret <1 then messagebox('发生错误',string(li_ret))
⑶ python http接口测试脚本怎么写
根据Testcase的具体业务逻辑用事先准备好的测试数据去调用封装好的API接口,验证实际返回结果是否与预期返回结果一致.
测试数据可以以各种形式存放,如Excel数据表:
TestCaseName uname method Expected Result
TestCase1 aaaa GET ....
TestCase2 aaaa POST ....
TestCase3 bbbb GET ....
... ... ... ....
⑷ 接口post请求循环体的脚本怎么写
1.可以指定后续请求的名称或ID,收集运行器将处理其余的工作。
2.它可以在预请求或测试脚本中使用。如果有多个赋值,则优先使用最后一个设定值。3.如果请求中缺post .setnextrequest(),则集合运行器默认为线性执行,并移动到下一个请求。
4.一定要注意:在连续循环一个请求时,应该在某些逻辑中封装setNextRequest,以确保请求不会枣逗伏无限期地运行,否则需要强制关闭收集运行器。
5.在指握action空白处,点击insert—凳携>step,输入web_custom_request,双击选择该函数,填入如下几个参数值,然后就完成了。
6.这些东西其实很难,所以我们要做对它的话,就得要去研究它,然后来一步一步的尝试做对,我们在研究它的过程中,一定是困难的,但是我们要耐得住困难,加油。