数据驱动测试

postman-03 csv文件驱动 - 图1
上面思维导图主要针对单个接口进行测试点分析。在做接口测试的时候除了测试正常的业务场景,也要考虑异常数据场景。


单接口异常场景 场景特别多,测试的时候测试主要字段都一样,对应的字段值不一样。

现在通常的做法:
将数据存放到csv文件中,不同场景对应不同的数据。接口在执行的时候,有多少条数据,执行多少次。 这就是我们常说的 数据驱动测试

postman中数据驱动测试

测试发布话接口,根据上面梳理的测试点,整理测试数据。

1. 准备测试数据

token title tab content
helloworld ask 哈哈哈哈哈哈哈
123456 helloworld ask 哈哈哈哈哈哈哈

testdata.csv

将整理好的数据保存为 utf8编码的 csv文件。
image.png

中文乱码问题

image.png
备注: 个别电脑上使用wps软件保存不能设置utf8格式,下面说明
保存为csv文件
image.png
保存完成之后,使用记事本打开
image.png
另存为的时候,选择格式为 【utf-8】
image.png

2. 开始准备测试

创建请求,请求中对应的数据使用变量的方式,变量名称来源自 上面定义的数据文件中。请求编写完成之后一定要记得【保存】。
image.png

3. 运行

在执行窗口运行
image.png

  • Data 选择csv数据文件

选择csv文件之后,可以点击【Preview】 查看数据
image.png
确定数据无误之后,点击【运行】
image.png
运行之后,可以看到执行的结果
image.png

运行文件

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

动态添加状态码断言

image.png

状态码的期望结果已经写到csv文件中。
在添加断言的时候,期望结果需要从csv文件中来获取。

  1. pm.variables.get("expect_code") // 从csv文件中获取对应的变量值。

动态获取csv文件中定义的状态码断言就可以这样来写。

  1. pm.test("状态码断言"+pm.variables.get("expect_code"), function () {
  2. pm.response.to.have.status(pm.variables.get("expect_code"));
  3. });

同样的,针对服务器返回的结果进行断言。
image.png

编写断言。

  1. // 从csv文件中获取 对应变量值 pm.variables.get("expect_code")
  2. pm.test("状态码断言"+pm.variables.get("expect_code"), function () {
  3. pm.response.to.have.status(pm.variables.get("expect_code"));
  4. });
  5. // 对服务器返回结果的错误提示信息进行断言
  6. pm.test("服务器返回结果中包含字段"+pm.variables.get("expect_err_msg"), function () {
  7. pm.expect(pm.response.text()).to.include(pm.variables.get("expect_err_msg"));
  8. });

执行结果

image.png
可以根据执行结果快速找到有问题的场景。

单接口测试.postman_collection.json
createtopics.csv

面试问题

  1. 如何判断接口运行成功还是失败?
    1. 查看服务器返回的状态码
    2. 主要看服务器返回的结果内容。
  1. 单接口是如何进行测试的?

针对单接口除了要进行正常的业务场景进行测试,还要对异常场景进行测试。异常场景比较多,一个一个测试起来比较麻烦,我们在测试过程中使用批量的方式进行测试。

  1. 首先使用思维导图整理测试点
  2. 根据测试点将数据存放到CSV(UTF8格式)文件中
  3. 在请求的参数中使用变量 变量名要跟csv文件保持一致。
  4. 运行csv文件中的实现多异常场景测试。
  1. 异常场景的接口测试是如何添加断言的?

异常场景测试有不同的数据,每条数据对应的结果也都不一样,所以再加断言的时候使用动态的方式添加断言。
将断言期望结果存放在CSV文件中,在Postman中通过代码的方式访问CSV文件中定义的预期结果进行断言。