集合执行
集合是一组请求,运行集合,就会依据所选的环境变量,发送集合中所有的请求,如果配合脚本就可以构建集成测试套件,在接口请求之间传递数据,并构建接口实际工作流的镜像。如果想要自动化测试接口,运行集合是非常必要的
集合运行参数
集合可以在Postman应用程序中使用集合运行器运行,也可以从命令行使用Newman工具运行
打开集合运行器
1、在Postman中运行集合,单击集合右侧的">"按钮,展开集合详细信息,此时">"按钮变为"<"
2、单击"Run"按钮,打开Collection Runner集合运行器窗口
集合运行参数
说明:
Choose a collection or folder
这里设置(选择)要运行的集合或文件夹。当运行一个集合时,集合中的所有请求都会按照它们在Postman中出现的顺序发送,这就意味着每个文件夹和文件夹中的请求都是按顺序执行的。但是,可以通过使用setNextRequest()方法更改请求发送的顺序以反映工作流程
Environment
这里设置运行集合时使用的环境变量
Iterations
设置集合运行的次数。设置为n,则被选中的集合中的请求将被发送n遍(是所有请求都发送n遍)
Delay
设置发送每个请求之间的时间间隔(单位为ms)。如果设置为x,则表示发送完一个请求后,等待x毫秒后才发送下一个请求
Log Responses
设置集合运行时所记录的日志级别。默认情况下,所有Requests的响应都记录日志,但是对于大型集合,可以更改设置以提高性能。日志共包含如下3个级别
⑴For all requests:记录所有请求的响应日志
⑵For failed requests:只记录至少一个失败测试请求的响应日志
⑶For no requests:不会记录响应日志
Data
为集合提供运行的数据文件。如集合所需要的数据驱动文件。在选择文件后还需要选择所选文件的类型,如TXT、Excel
Persist Variables(保持变量)
默认情况下,集合运行器中的任何变量更改都不会在请求构建器中反映出来。假如环境变量中有个变量"name=storm",如果请求执行时会设置(通过脚本设置等)"name=lina":选中此项,将不会更改环境变量中的name的值;如果不选中,则该请求发送完成后,环境变量中name的值将变为lina
使用环境变量
多用环境变量能够帮助用户创建可以重用的健壮请求。环境变量也可以在集合运行器中使用
例:
1、构建请求
请求中,对应的请求URL和请求头中使用了{{path}}和{{foo}}环境变量
2、设置变量
3、设置测试脚本
测试脚本期望响应主体中foo的值等于bar。最后,我们通过setEnvironmentVariable将foo的值设置成了bar2
let jsonData = JSON.parse(responseBody);
tests['Correct value is returned'] = jsonData.form.foo === 'bar'
postman.setEnvironmentVariable('foo', 'bar2')
4、在集合中运行
此时先在集合中运行且先不勾选保持变量
5、查看结果
5.1、查看环境变量
注:
从上面的运行结果可以看出:在未勾选"保持变量值"时,虽然脚本中设置了变量"foo"的值,但是在运行集合时其设置效果是不会反映到请求构建器中的(不会修改环境变量中变量的值)
6、在集合中运行且勾选"保持变量值"
此时现在集合中运行且勾选"保持变量值"
6.1、勾选保持变量_测试结果
6.2、勾选保持变量_查看环境变量
注:
从上面的运行结果可以看出:在勾选"保持环境变量值"时,在脚本中设置了变量"foo"的值,在运行集合后其设置效果会反映到请求构建器中(会修改环境变量中变量的值)
7、在请求构建器中直接运行请求
在请求构建器中直接运行请求且未勾选集合运行器中的"保持变量值"
7.1、在请求构建器中发送请求_查看变量
注:
从上面的运行结果可以看出:直接在请求构建器中运行请求时,即使没勾选集合运行器中的"保持变量值",也会修改环境变量中变量的值(在集合运行器中运行和在构建器中运行本来就没啥联系)
8、在请求构建器中再次运行
总结:
1、默认情况下,集合运行器中环境变量(或全局变量)中的任何变量变化都将反映在Postman主应用程序窗口中,因为在选项中会检查持久化变量(如果再次运行这个集合,就会它失败,因为在上次运行时改变了变量"foo"的值)
2、默认情况下,Persist Variables在我们第一次打开Collection Runner时被选中。如果不想在运行过程中更新变量,那就取消选中Persist Variables复选框。在这种情况下,在Collection Runner中修改的任何变量都不会影响Postman主应用中对应的环境变量值,在Collection Runner中做的任何修改都会在运行完成后恢复它原始的值。当我们在请求中重复使用相同的变量并希望多次运行相同的集合时,这非常有用。 这也将确保环境(和全局)状态不受集合运行的影响。
数据文件
数据文件是使用不同的测试数据来测试API,以检查它们是否在各种情况下都能正常运行。我们可以认为数据文件是集合运行的每个迭代的参数
例:
1、构建请求
该请求中有两个变量:在URL中的{{path}}和在主体中的{{value}}
2、准备测试脚本
在"Tests"选项卡中,测试脚本中也使用了变量,这些变量本身并没有定义。Postman将从集合运行时选择的JSON/CVS文件初始化数据变量
3、准备数据文件
Postman目前支持JSON、TXT和CSV三种格式的文件。这里用JSON文件
[{
"path": "post",
"value": "1"
}, {
"path": "post",
"value": "2"
}, {
"path": "post",
"value": "3"
}, {
"path": "post",
"value": "4"
}]
注:
1、这是一个对象数组。每个对象表示一次迭代的变量值。该对象的每个成员都代表一个变量。这样,在第一次迭代中,路径的变量将被赋值为post,并且请求体中的value将被赋值为1。同样,在第二次迭代中,path=post,value=2。(在这个例子中变量path的值没有变,只有变量path的值有变化,这完全取决于用户怎么设计自己的测试用例)
2、数据文件也可以是CSV。CSV看起来像这样:
path, value
post, 1
post, 2
post, 3
post, 4
在典型的CSV方式中,第一行表示所有变量名称,后续行表示每次迭代时这些变量的值
3、请注意,“Collection Runner”的每一次运行只能选择一个数据文件
4、选择数据文件
在集合运行器中,点击"Select File"按钮来选择数据文件,且可以点击"Preview"按钮来查看每个变量在各次迭代中的值
5、查看运行结果
注:
1、运行集合后。可以看到所有的测试都通过了。如果打开请求调试工具并展开请求正文,则会看到变量{{value}}已被数据文件中对应的值所代替。实际上,对于不同的迭代,这个值是不同的。这样可以将不同类型的数据传给API进行测试,并确保了每个案例都能够正确工作
2、再来看看我们的测试脚本。变量数据是一个预定义的变量,它从数据文件中获取值。随着每次迭代,它的值将从指定的文件中得到新的数据。数据是一个对象,所有变量在文件中定义为键。由于这个API回传了发送给它的任何东西,所以可以断言Echo的返回值与文件所指定的值相同
3、在所有可以使用环境变量的地方都可以使用数据文件,但Pre-request Script和Tests中不可使用
4、看到有些教程中:在使用本地数据文件时,还需要在Pre-request Script项下设置关于变量的脚本,但是自己试了下,在使用txt和JSON文件没有设置变量脚本时,也可以正常发送请求
迭代运行集合
"Collection Runner"窗口的"Iterations"项反映了集合运行的次数。当一个集合下有很多请求且迭代运行了很多次后,可能会造成查找某个请求运行结果困难的情况,因此Postman提供了几种快速查找请求的办法
在迭代之间切换
要在迭代之间快速跳转,可以单击右边栏中的一个数字,每个数字代表一个迭代。点击某个数字后,就可以快速定位到对应迭代次数下的请求位置
使用过滤器
左侧边栏包含3个过滤器,它们可以用来显示所有通过或失败的测试。这在查找失败的测试时非常有效
调试多次迭代(摘要)
1、当运行多次迭代时,想要检查所有的测试是否如期望的那样,需要不停的切换迭代来查看运行结果,这样就显得很是麻烦。因此,Postman提供了一个运行摘要页面,当运行完成时,用户可以点击"Run Summary"按钮打开摘要页面
2、页面显示表示运行结果的概述,可以看到每个请求及其执行的状态。如果所有的测试都通过,则请求被视为Passed。同理,如果一个或多个失败则标记为Failed
3、标题中的数字表示处于哪次迭代。这能准确的指出错误发生在何处。点击迭代数字可以跳转到这个迭代详情中,进一步查看请求出错的地方
注:
集合运行器中的迭代在第一次迭代中以1为索引,即1为起点。这与在Postman沙箱中以编程方式访问的迭代计数不同,后者在第一次迭代开始时以0位索引(集合运行器中的迭代索引从1开始,沙箱中访问迭代从0开始)