Postman的数据驱动,也可以叫做参数化。
我们在执行测试用例的过程,本质上是执行的不同数据。因此我们的测试是输入不同数据,并执行查看接口返回结果的过程。
所以我们可以在计算机中,使用预先设定好的数据文件,来批量执行测试用例,实现覆盖测试点。
这个过程就叫做数据驱动。
为了更方便地管理接口请求的执行,可以通过Postman测试集(collection)来完成测试的操作,每一个测试请求可以看成一个测试用例(testcase),Collections能够一次管理多个测试用例来执行。
通过save
,能够将请求保存到Collections中使用。
学院新增:
1) 请求方法:POST 2) 请求地址:http://127.0.0.1:8000/api/departments/ 3) 请求JOSN报文:参数为json格式的请求报文 4) 调用传入的json串如下(可新增多条,之间用,隔开): { "data": [ { "dep_id": "T01", "dep_name": "Test学院", "master_name": "Test-Master", "slogan": "Here is Slogan" } ] }
新增成功返回报文:
{ "already_exist": { "results": [], "count": 0 }, "create_success": { "count": 1, "results": [ { "dep_id": "T02", "dep_name": "Java学院", "master_name": "Java-Master", "slogan": "java" } ] } }
新增失败:id已存在所返回的报文
{ "already_exist": { "count": 1, "results": [ { "dep_id": "T01", "dep_name": "Test学院", "master_name": "Test-Master", "slogan": "Here is Slogan" } ] }, "create_success": { "results": [], "count": 0 } }
新增失败:json数据格式错误
{ "status_code": 400, "detail": "请求体参数格式错误。" }
因为我们批量执行新增学院接口,通过上面接口文档可以得到提交数据的格式与内容,如下:
{ "data": [ { "dep_id": "T01", "dep_name": "Test学院", "master_name": "Test-Master", "slogan": "Here is Slogan" } ] }
创建一个Excel文件,编写如下内容:
dep_id | dep_name | master_name | slogan |
---|---|---|---|
100 | Tester_100 | Master_100 | 一个口号 |
101 | Tester_101 | Master_101 | 一个口号 |
102 | Tester_102 | Master_102 | 一个口号 |
103 | Tester_103 | Master_103 | 一个口号 |
104 | Tester_104 | Master_104 | 一个口号 |
105 | Tester_105 | Master_105 | 一个口号 |
106 | Tester_106 | Master_106 | 一个口号 |
107 | Tester_107 | Master_107 | 一个口号 |
108 | Tester_108 | Master_108 | 一个口号 |
109 | Tester_109 | Master_109 | 一个口号 |
110 | Tester_110 | Master_110 | 一个口号 |
说明:
.cvs
文件。(弹出的提示一律选择是)Notepad++
文档工具打开,然后转为UTF-8编码
,并保存。否则中文存入数据库会乱码。UTF-8
的编码格式。说明:
- Postman只支持
.csv
和.json
格式的数据文件。- 数据多推荐使用
.csv
格式的数据文件进行数据驱动。- 数据少推荐使用
.json
格式的数据文件进行数据驱动,不容易出错。
根据文档,创建新增学院请求如下图:
注意:
{{ }}
中的字段,一定要和数据文件中的字段对应上。
然后编写接口断言:
提示:
请求创建完成后要进行保存。
如果请求有修改,保存后,再重新Collection Runner界面。
当需要进行数据驱动运行多次Postman脚本时,可以通过.csv
或者.json
格式的数据文件,对接口测试数据进行管理,以方便用例的执行。
Collection Runner
界面进入Collection测试集的Collection Runner
界面。
点击Collection测试集名称后边的箭头,点击Run
。
在Collection Runner
界面中选择需要执行的接口。
我们只需要执行批量新增学院请求,如下图:
按钮说明:
Deselect All
:取消全选(默认全选)。Select All
:全选。Reset
:重置(恢复默认全选)。Collection Runner
配置Collection Runner执行选择。
Environment
:选择环境变量。Iterations
:接口迭代次数,这个不用填写,选择数据文件后会自动识别(会自动忽略第一行标题)。Delay
:每次执行的间隔。Data
:选择.csv
数据文件。(可以添加测试数据,在tests中用data参数访问)// data 表示数据文件的对象 // data.cityname表示获取数据文件中的cityname属性值 pm.test("验证返回中city的值是"+data.cityname, function () { var jsonData = pm.response.json(); // 获取返回值所有数据 pm.expect(jsonData.city).to.eql(data.cityname); // 断言返回值中具体字段的值 }); // 这种取值方式要重点记住
Save responses
:保存响应。Keep variable values
:是否保留测试集执行过程中对环境变量的修改。(够不勾选都可以)Run collection without using stored cookies
:在不使用存储的cookie的情况下运行测试集。Save cookies after collection run
:测试集运行后保存cookie。Run ***
:运行已选择collection测试集中的接口。配置完如下图:
重点提示:
Preview
能够查看数据文件中内容预览,可以查看文件读取内容是否有误。
执行并查看结果。
说明:
(1)顶部栏:
Collection Runner
:返回Collection Runner界面。Run Results
:当前Run运行的结果界面。My Workspace
:切换工作空间。Run In Command Line
:在命令行中运行。(好像是需要安装一个Newman的命令行工具来执行命令,这个暂时不重要)Docs
:进入Postman官方文档https://learning.postman.com/docs/running-collections/intro-to-collection-runs/(2)测试结果部分:
测试集Run完成后:
执行完成PASSED和FAILED的总和,等于每个接口断言个数×执行次数。
(3)工具栏:
Run Summary
:查看运行摘要(概况)。Export Results
:导出测试集执行结果,.json
文件的形式。Retry
:重新执行一次测试集。New
:新建一个Collection Runner界面,其实也就是返回了Collection Runner界面。(4)请求列表部分:
说明:
(5)底部栏:
Console
:控制台,可以查看每个请求的运行日志和数据信息。
可以查看请求头、请求体、响应头、相应体等数据。
如果请求报错,也可以查看到错误信息。
以上就是在Postman中数据驱动的使用过程。(json格式的数据文件使用同理)
实际上面是讲了两部分内容,
- 一部分是Collection测试集的执行,也就是
Collection Runner
。- 还有一个就是Postman中数据驱动的使用。
[ { "userName":"张三", "passWord":"123456", "sex":"男", "age":66 }, { "userName":"李四", "passWord":"123456", "sex":"男", "age":88 }, { "userName":"王五", "passWord":"123456", "sex":"女", "age":99 } ]
提示:外面必须是[]
,每一组数据使用 {}
进行封装,中间使用逗号进行分隔。
.csv
文件Pre-request Script
编写如下代码:
// 在Pre-request Script和tests中用data代表访问参数 // 获取参数化文件中的dep_name字段的值 var dep_name = data.dep_name // 将获取到的 dep_name 设置为环境变量 pm.environment.set("dep_name", dep_name); // 调试 console.log(pm.environment.get("dep_name"));
.json
文件Pre-request Script
编写如下代码:
// 在Pre-request Script和tests中用data代表访问参数 // 获取参数化文件中的userName字段的值 var userName = data.userName // 将获取到的 userName 设置为环境变量 pm.environment.set("userName", userName); // 调试 console.log(pm.environment.get("userName"));
参考:https://zhuanlan.zhihu.com/p/150292738