继续来看上一篇提出的问题,如果执行用例需要用到大量数据,比如获取多个不同城市的天气情况,这个数据如何提供?
熟悉自动化测试或者性能测试的同志应该有点思路方向了,像这类的数据基本都是在工具之外提供,很少在工具内部造数据批量执行用例。这就是所谓的数据与脚本分离。
在工具外部造数据有很多方式,如 excel 文件、csv 文件、xml 文件、json 文件、txt 文件和数据库等等,但也不是所有工具都可以使用上面的方式准备数据去调用,最终选取哪种方式这个还得考虑工具本身是否支持调用该种格式的文件数据。
Postman目前支持导入外部的数据文件格式有 json 和 csv 两种,以后会不会支持更多的文件格式这个还不得而知。这里,我们先来学习调用 csv 格式的数据。
1、创建 csv 文件数据
创建 csv 文件(操作简单这里就不详细讲了)
-
在 csv 文件内创建测试数据(我们承接前面的脚本,创建一列 test_location 的测试数据)
2、修改断言
有些人可能有疑问,为什么又要修改断言,上面不是调试好了吗?
想想上面断言调用的 test_location 变量值是从何处而来的?对,调用的是 Postman 全局变量。从 csv 文件调用变量值和从 Postman 调用全局变量值的写法不一样,外部文件的数据导入到 Postman 中后默认存放在一个名称为 data 的对象中,所以想用 csv 文件中的变量需要从 data 中调用。下面是断言的脚本:
// 从csv文件获取test_location变量值
// 打印 test_location 值到控制台
console.log("test_location的值是:" + data.test_location);
var jsonData = JSON.parse(responseBody);
tests["检查城市名称"] = jsonData.results[0].location.name === data.test_location;
3、运行 collection
要获取多个城市的天气情况,可以多次循环运行上面的脚本,每次运行获取一个城市的天气情况。循环运行脚本在 Runner 的模式下进行,所以在循环运行脚本之前要先切换到 Runner 模式。
点击上面的 Run 按钮后会出现一个新的窗口,窗口页面有比较多的选项设置,直接看图吧。
选择了 csv 文件后,我们可以看到 Data 下面多了一行 Data File Type ,显示了文件的格式类型,另外旁边还有一个 Preview 按钮,点击按钮可以预览 csv 文件中的测试数据。
如果预览数据时出现乱码,可以用 Notepad++ 软件打开查看文件内容编码格式是否为 UTF-8 ,如果不是则转换成 UTF-8 无 BOM 编码格式保存即可。
4、Run Results
所有选项设置完成后,我们把 console 控制台打开,方便查看 log 信息。
点击底部蓝色 Run 运行按钮,等待运行完后会看到测试结果页面。
结果显示全部测试通过,接着看一下 console 控制台的 log 信息。
从控制台的 log 信息可以看出测试使用的数据是从 csv 文件调用的。
到这里为止, 一个简单的 Postman 工具做接口测试流程就完了。