多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## **前言** 数据文件是非常强大的方式使用不同的测试数据来测试我们的API,以检查它们是否在各种情况下都能正常运行。我们可以认为数据文件是“Collection Runner”中每个请求的参数。下面,我们通过一个例子来说明如何使用数据文件。 这篇文章需要结合下面两个文件进行说明,请分别下载: * [集合文件](https://image.jellythink.com/usingDataFile.postman_collection.json) * [数据文件](https://image.jellythink.com/usingDataFile.postman_data.json) 在Postman中导入集合文件。导入成功后,我们就有了一个只有一个Post请求的集合。打开这个集合中的请求,我们会发现这个请求有两个变量,分别是请求URL中的`path`和请求体中的`value`,它们就像和环境变量一样被使用。这次,我们将通过使用数据文件,给这些变量赋值。再打开该请求的测试脚本,我们会发现在脚本中使用了`data`指定的数据。这个`data`在脚本中本身并没有定义。Postman沙箱从我们在设置集合运行的配置参数中选择的`JSON/CSV`文件初始化数据变量。 ![](https://img.kancloud.cn/f1/f6/f1f6aa2710f72e865713cca5ecbc568f_1489x873.png) ## **使用案例** 下面就来看看到底如何在“Collection Runner”使用数据文件。我们先看看数据文件,Postman目前支持JSON和CSV两种格式的文件。在本文中对应的数据JSON文件像下面这样: ~~~ [{ "path": "post", "value": "1" }, { "path": "post", "value": "2" }, { "path": "post", "value": "3" }, { "path": "post", "value": "4" }] ~~~ 这是一个对象数组。每个对象表示一次迭代的变量值。这个对象的每个成员都代表一个变量。这样,在第一次迭代中,路径的变量将被赋值为post,并且请求体中的value将被赋值为1。同样,在第二次迭代中,路径的变量将被赋值为post,并且请求体中的value将被赋值为2。 数据文件也可以是CSV。示例CSV看起来像这样: ~~~ path, value post, 1 post, 2 post, 3 post, 4 ~~~ 在典型的CSV方式中,第一行表示所有变量名称,后续行表示每次迭代时这些变量的值。对于迭代1,路径值为post,请求体值为1。对于第二次迭代,路径值仍然为post,但请求体值为2。 > 请注意,“Collection Runner”的每一次运行只能选择一个数据文件。 现在我们已经了解如何构建数据文件,接下来我们将该数据文件提供给“Collection Runner”。在运行器中单击选择文件,然后选择其中一个文件。我们还可以通过单击文件名旁边的预览来预览每个变量,以及每个变量的值。如下图所示: ![](https://img.kancloud.cn/e5/61/e561626e806c2e871f07e50e9cc32def_1280x800.png) 现在我们可以运行我们的集合。我们会看到所有的测试都通过了。如果打开请求调试工具并展开请求正文,则会看到变量`{{value}}`已被数据文件中对应的值所代替。实际上,对于不同的迭代,这个值是不同的。这样,我们已经向我们的API使用了不同的数据进行测试,并确保它可以针对每种情况都能够正确工作。 ![](https://img.kancloud.cn/93/5d/935d2d7adf5cdea55a2bd497fe964b15_1280x800.png) 我们再来看看我们的测试脚本。变量数据是从数据文件中获取的。随着每次迭代,它的值都会从我们数据文件中获取对应的值。所以,我们可以通过API返回的值与我们在数据文件中设定的期望值进行比对,如果值一致,则认为测试通过;反之则测试不通过。 不仅仅在前置请求和测试脚本之中,数据变量可以在所有可以使用环境变量的地方使用,方式完全相同。