Postman的数据驱动,也可以叫做参数化。

1、什么是数据驱动?

我们在执行测试用例的过程,本质上是执行的不同数据。因此我们的测试是输入不同数据,并执行查看接口返回结果的过程。

所以我们可以在计算机中,使用预先设定好的数据文件,来批量执行测试用例,实现覆盖测试点。

这个过程就叫做数据驱动。

2、测试集说明

为了更方便地管理接口请求的执行,可以通过Postman测试集(collection)来完成测试的操作,每一个测试请求可以看成一个测试用例(testcase),Collections能够一次管理多个测试用例来执行。

通过save,能够将请求保存到Collections中使用。

3、创建请求与准备数据文件

(1)新增学院结果文档内容如下

学院新增:

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": "请求体参数格式错误。"
}

(2)编写数据文件

因为我们批量执行新增学院接口,通过上面接口文档可以得到提交数据的格式与内容,如下:

{
"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 一个口号

说明:

  • 把Excel文件要保存为.cvs文件。(弹出的提示一律选择是)
  • 要把保存后的文件用Notepad++文档工具打开,然后转为UTF-8编码,并保存。否则中文存入数据库会乱码。

    因为Postman对数据文件,只支持UTF-8的编码格式。

  • 如果是以key-value表单的形式提交,也是一样的一个key对应Excel中的一列数据。(请求中需要一个变量,就再Excel中定义一列数据)
  • 在Postman读取文件的时候,会把第一行自动忽略掉。

说明:

  • Postman只支持.csv.json格式的数据文件。
  • 数据多推荐使用 .csv格式的数据文件进行数据驱动。
  • 数据少推荐使用.json格式的数据文件进行数据驱动,不容易出错。

(3)在Postman中创建请求

根据文档,创建新增学院请求如下图:

注意:

{{ }}中的字段,一定要和数据文件中的字段对应上。

然后编写接口断言:

提示:

请求创建完成后要进行保存。

如果请求有修改,保存后,再重新Collection Runner界面。

4、实现Postman中的数据驱动

当需要进行数据驱动运行多次Postman脚本时,可以通过.csv或者.json格式的数据文件,对接口测试数据进行管理,以方便用例的执行。

步骤1:进入Collection Runner界面

进入Collection测试集的Collection Runner界面。

点击Collection测试集名称后边的箭头,点击Run

步骤2:选择需要执行的接口

Collection Runner界面中选择需要执行的接口。

我们只需要执行批量新增学院请求,如下图:

按钮说明:

  • Deselect All:取消全选(默认全选)。
  • Select All:全选。
  • Reset:重置(恢复默认全选)。

步骤3:配置Collection Runner

配置Collection Runner执行选择。

  1. 选择Collection测试集。
  2. Environment:选择环境变量。
  3. Iterations:接口迭代次数,这个不用填写,选择数据文件后会自动识别(会自动忽略第一行标题)。

    如果只执行测试集,不进行数据驱动,自己按需求填写。
  4. Delay:每次执行的间隔。
  5. 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); // 断言返回值中具体字段的值
    }); // 这种取值方式要重点记住
  6. Save responses:保存响应。

    允许记录请求的响应头和正文,方便您查看。

    这可能会收集较多的数据,从而影响测试集运行的性能。
  7. Keep variable values:是否保留测试集执行过程中对环境变量的修改。(够不勾选都可以)
  8. Run collection without using stored cookies:在不使用存储的cookie的情况下运行测试集。
  9. Save cookies after collection run:测试集运行后保存cookie。

    更新此会话中存储的cookie,并将其保存到您的cookie管理器中。

    (以上四项默认即可)
  10. Run ***:运行已选择collection测试集中的接口。

配置完如下图:

重点提示:Preview能够查看数据文件中内容预览,可以查看文件读取内容是否有误。

步骤4:执行测试

执行并查看结果。

说明:

(1)顶部栏:

(2)测试结果部分:

测试集Run完成后:

  • 成功多少个断言。
  • 失败多少歌断言。
  • 测试集的名称。
  • 测试集选择的环境变量。

执行完成PASSED和FAILED的总和,等于每个接口断言个数×执行次数。

(3)工具栏:

  • Run Summary:查看运行摘要(概况)。

    如下图:

  • Export Results:导出测试集执行结果,.json文件的形式。
  • Retry:重新执行一次测试集。
  • New:新建一个Collection Runner界面,其实也就是返回了Collection Runner界面。

(4)请求列表部分:

说明:

  • 我们可以看到每一个请求名称、URL、执行的响应码、使用时间、所用数据,还有该请求所执行的断言。
  • 左侧栏可以点击切换,只查看成功的断言、只查看失败的断言和全部显示。
  • 右侧栏我们可以直接选择查看第几次发送的请求。
  • 点击请求的名称,我们也可以看到该请求的详细数据,如下图:

(5)底部栏:

Console:控制台,可以查看每个请求的运行日志和数据信息。

可以查看请求头、请求体、响应头、相应体等数据。

如果请求报错,也可以查看到错误信息。

以上就是在Postman中数据驱动的使用过程。(json格式的数据文件使用同理)

实际上面是讲了两部分内容,

  • 一部分是Collection测试集的执行,也就是Collection Runner
  • 还有一个就是Postman中数据驱动的使用。

5、补充: json格式数据文件说明

[
{
"userName":"张三",
"passWord":"123456",
"sex":"男",
"age":66
},
{
"userName":"李四",
"passWord":"123456",
"sex":"男",
"age":88
},
{
"userName":"王五",
"passWord":"123456",
"sex":"女",
"age":99
}
]

提示:外面必须是[],每一组数据使用 {} 进行封装,中间使用逗号进行分隔。

6、补充:数据文件在预置脚本中的使用

(1).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"));

(2).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

『政善治』Postman工具 — 12、Postman中实现数据驱动的更多相关文章

  1. 『政善治』Postman工具 — 1、Postman介绍与安装

    目录 一.Postman介绍 二.Postman下载与安装 1.Postman下载 2.Postman安装 3.为什么要注册Postman账号 一.Postman介绍 Postman是一款非常流行的H ...

  2. 『政善治』Postman工具 — 2、Postman主界面详细介绍

    目录 1.Postman菜单栏 (1)File 菜单 (2)Edit 菜单 (3)View 菜单 (4)Help 菜单 2.Postman工具栏 3.Postman工具栏中的系统设置 4.Postma ...

  3. 『政善治』Postman工具 — 7、Postman中保存请求(Collections集合)

    目录 1.创建Collection 2.保存Request请求 3.查看保存的请求 4.Collection下还可以创建文件夹 5.补充:Postman中的变量 6.总结 1.创建Collection ...

  4. 『政善治』Postman工具 — 8、Postman中Pre-request Script的使用

    目录 1.Pre-request Script介绍 2.常用SNIPPETS(片段)说明 (1)获取变量脚本: (2)设置变量脚本: (3)清空变量脚本: (4)Send a request代码片段 ...

  5. 『政善治』Postman工具 — 10、Postman中对Cookie的操作

    目录 1.往常的Cookie处理方式 2.Postman中的Cookie管理机制 3.自定义Cookie管理内容 在接口测试中,某些接口的调用,需要带入已有Cookie,比如有些接口需要登陆后才能访问 ...

  6. 『政善治』Postman工具 — 13、Postman接口测试综合练习

    目录 (一)项目接口文档 1.鉴权接口 2.注册接口 3.登录接口 4.用户信息接口 5.注销接口 (二)网站上手动验证 (三)Postman测试实现 1.准备工作 (1)创建一个Collection ...

  7. 『政善治』Postman工具 — 14、NewMan工具的使用详解

    目录 1.NewMan工具的介绍 2.NewMan的安装 (1)安装 (2)验证NewMan环境: (3)NewMan卸载命令 3.NewMan执行Postman测试集 (1)导出collection ...

  8. 『政善治』Postman工具 — 4、HTTP请求基础组成部分介绍

    目录 1.Method 2.URL 3.Headers 4.body 一般来说,所有的HTTP Request都有最基础的4个部分组成:URL. Method. Headers和body. 1.Met ...

  9. 『政善治』Postman工具 — 9、在Postman中使用断言

    目录 1.Tests的介绍 2.常用SNIPPETS(片段)说明 (1)常用变量相关 (2)状态码相关 (3)响应结果断言: (4)Header : (5)响应速度: 3.示例 (1)响应码断言 (2 ...

随机推荐

  1. 了解 Vue 的 Compsition API

    在这篇文章中,我将讲讲 Vue 的 Composition API 为什么比之前的 Options API 要好,以及它是如何工作的. Options API 有什么问题 首先,这里不是要大家放弃 O ...

  2. 第3 章 : Kubernetes 核心概念

    Kubernetes 核心概念 本文整理自 CNCF 和阿里巴巴联合举办的云原生技术公开课的课时 3:Kubernetes 核心概念.本次课程中,阿里巴巴资深技术专家.CNCF 9个 TCO 之一 李 ...

  3. 高精度加法(c++)

    为什么要用高精度? 有时我们要进行精度较高的运算时,就要使用高精度来进行运算: 就如例题: 大整数加法 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 21965 通过数: 634 ...

  4. Java中获取类的运行时结构

    获取运行时类的完整结构 通过反射获取运行时类的完整结构 Field(属性).Method(方法).Constructor(构造器).Superclass(父类).Interface(接口).Annot ...

  5. JavaWeb 补充(Cookie&JSP&Session)

    1. 会话技术     1. Cookie     2. Session 2. JSP:入门学习 会话技术 1. 会话:一次会话中包含多次请求和响应.     * 一次会话:浏览器第一次给服务器资源发 ...

  6. 【笔记】《算法竞赛入门》习题7-3 UVa211_多米诺效应

    title: 习题7-3 UVa211_多米诺效应 date: 2021-01-29 19:08:00 categories: 算法竞赛入门 tags: 数据结构 算法 UVa 题目: 使用28个多米 ...

  7. 关于Vim/Neovim/SpaceVim的一些思考

    1 前言 最近看到了Neovim以及SpaceVim,于是上手试了一下. 2 Neovim与SpaceVim Neovim是Vim的一个分支,具有更加现代的GUI.嵌入式以及脚本化的终端.异步工作控制 ...

  8. BLUENRG-LP 学习笔记

    在学习 BLUENRG-LP 的过程中,及时地把碰到的问题记录下来,并作解答,形成本文档. 该文档会时时更新,并且当某些章节内容过多时,会独立出来,形成新的文章. BLUENRG-LP 的特性 芯片内 ...

  9. 2021S软件工程——结对项目第三阶段

    2021S软件工程--结对项目第三阶段 2021春季软件工程(罗杰 任健) 项目地址 1020 1169 1 实践反思 1.1 问题分析 两人习惯不一致 没有具体制定时间节点 写完代码才开始" ...

  10. C++介绍和class的介绍

    课程介绍 程序设计II是程序设计I的延续,继续提高编程能力,并能掌握面向对象(Object Oriented Programming)的程序设计方法.所谓面向对象,指的是将具体的流程变得模块化.这可以 ...