数据驱动测试
上面思维导图主要针对单个接口进行测试点分析。在做接口测试的时候除了测试正常的业务场景,也要考虑异常数据场景。
单接口异常场景 场景特别多,测试的时候测试主要字段都一样,对应的字段值不一样。
现在通常的做法:
将数据存放到csv文件中,不同场景对应不同的数据。接口在执行的时候,有多少条数据,执行多少次。 这就是我们常说的 数据驱动测试
。
postman中数据驱动测试
测试发布话接口,根据上面梳理的测试点,整理测试数据。
1. 准备测试数据
token | title | tab | content |
---|---|---|---|
helloworld | ask | 哈哈哈哈哈哈哈 | |
123456 | helloworld | ask | 哈哈哈哈哈哈哈 |
将整理好的数据保存为 utf8编码的 csv文件。
中文乱码问题
备注: 个别电脑上使用wps软件保存不能设置utf8格式,下面说明
保存为csv文件
保存完成之后,使用记事本打开
另存为的时候,选择格式为 【utf-8】
2. 开始准备测试
创建请求,请求中对应的数据使用变量的方式,变量名称来源自 上面定义的数据文件中。请求编写完成之后一定要记得【保存】。
3. 运行
在执行窗口运行
- Data 选择csv数据文件
选择csv文件之后,可以点击【Preview】 查看数据
确定数据无误之后,点击【运行】
运行之后,可以看到执行的结果
运行文件
testdata.csv
单接口测试.postman_collection.json
csv文件动态断言
比如上面的接口中,执行的时候,csv文件定义不同数据,返回结果也都不一样。针对不同的结果,也要添加不同的断言。 断言的内容是根据输入的数据来定的。
根据业务,重新设计数据表。
token | title | tab | content | expect_code | expect_err_msg |
---|---|---|---|---|---|
helloworld | ask | 哈哈哈哈哈哈 | 401 | 错误的accessToken | |
123456 | helloworld | ask | 哈哈哈哈哈哈 | 401 | 错误的accessToken |
00ab076e-c735-4bee-bc59-64c41e7ee688 | helloworld | ask | 哈哈哈哈哈哈 | 401 | 错误的accessToken |
ccff696f-b321-48d2-b345-0c3acc8e86a4 | ask | 哈哈哈哈哈哈 | 400 | 标题不能为空 | |
ccff696f-b321-48d2-b345-0c3acc8e86a4 | h | ask | 哈哈哈哈哈哈 | 400 | 标题字数太多或太少 |
ccff696f-b321-48d2-b345-0c3acc8e86a4 | helloworl | ask | 哈哈哈哈哈哈 | 400 | 标题字数太多或太少 |
ccff696f-b321-48d2-b345-0c3acc8e86a4 | helloworld | ksa | 哈哈哈哈哈哈 | 400 | 必须选择一个版块 |
ccff696f-b321-48d2-b345-0c3acc8e86a4 | helloworld | ask | 400 | 内容不可为空 |
expect_code
期望的状态码。expect_err_msg
期望的错误提示信息。
测试数据文件
createtopics.csv
动态添加状态码断言
状态码的期望结果已经写到csv文件中。
在添加断言的时候,期望结果需要从csv文件中来获取。
pm.variables.get("expect_code") // 从csv文件中获取对应的变量值。
动态获取csv文件中定义的状态码断言就可以这样来写。
pm.test("状态码断言"+pm.variables.get("expect_code"), function () {
pm.response.to.have.status(pm.variables.get("expect_code"));
});
同样的,针对服务器返回的结果进行断言。
编写断言。
// 从csv文件中获取 对应变量值 pm.variables.get("expect_code")
pm.test("状态码断言"+pm.variables.get("expect_code"), function () {
pm.response.to.have.status(pm.variables.get("expect_code"));
});
// 对服务器返回结果的错误提示信息进行断言
pm.test("服务器返回结果中包含字段"+pm.variables.get("expect_err_msg"), function () {
pm.expect(pm.response.text()).to.include(pm.variables.get("expect_err_msg"));
});
执行结果
可以根据执行结果快速找到有问题的场景。
单接口测试.postman_collection.json
createtopics.csv
面试问题
- 如何判断接口运行成功还是失败?
- 查看服务器返回的状态码
- 主要看服务器返回的结果内容。
- 单接口是如何进行测试的?
针对单接口除了要进行正常的业务场景进行测试,还要对异常场景进行测试。异常场景比较多,一个一个测试起来比较麻烦,我们在测试过程中使用批量的方式进行测试。
- 首先使用思维导图整理测试点
- 根据测试点将数据存放到CSV(UTF8格式)文件中
- 在请求的参数中使用
变量
变量名要跟csv文件保持一致。 - 运行csv文件中的实现多异常场景测试。
- 异常场景的接口测试是如何添加断言的?
异常场景测试有不同的数据,每条数据对应的结果也都不一样,所以再加断言的时候使用动态的方式添加断言。
将断言期望结果存放在CSV文件中,在Postman中通过代码的方式访问CSV文件中定义的预期结果进行断言。