要实现Postman的数据驱动,主要分为五个大步骤

第一步:什么是数据驱动?

第二步:设计测试用例

第三步: 在Postman中编写测试用例脚本

第四步:分析脚本,设计数据文件,并通过参数化关联匹配数据参数

第五步:引用数据文件,执行测试用例,实现数据驱动测试。推荐了解传智播客软件测试课程。


一. 什么是数据驱动?

目标:理解数据驱动的概念

步骤:无

执行测试用例的过程,本质上是执行的不同数据,不同输入输出的过程。所以,在计算机中,我们可以使用预先设定好的数据文件,来执行测试用例,实现覆盖测试点。

本文主要以TPshop商城的登陆接口为例,实现自动化测试的数据驱动登陆接口的测试。

二. 设计测试用例

目标:完成TPshop登陆接口的部分测试用例设计

步骤:分析登陆接口请求数据和响应数据,设计测试用例

对登陆模块进行单接口测试点设计测试用例,用例设计情况如下:

(注意:本文的验证码验证部分,采用了万能验证码 )

三. 编写测试用例脚本

目标:使用Postman实现TPshop的登陆脚本编写

步骤:

· 编写TPshop商城的测试集和目录结构

·实现测试用例脚本

1.编写TPshop商城的测试集

编写TPshop商城的测试集有3个小步骤

• 新建一个测试集,名称为TPshop商城

• 添加一个文件夹,名称为登陆模块

• 在登陆模块文件夹下,新建5个文件夹,如图所示

• 根据测试用例设计,在每个文件夹下添加获取验证码接口和登陆接口,未展示部分依次类推

2.实现测试用例

按照我们的用例设计,主要有5个用例和1个前置条件需要实现,用例详情如下:

• 实现获取验证码接口(登陆的前置条件)

• 实现登陆成功测试用例脚本

• 实现用户名不存在测试用例脚本

• 实现密码错误测试用例脚本

• 实现用户名长度超出11位测试用例脚本

• 实现密码为空测试用例脚本

登陆的前置接口:获取验证码接口的实现

获取验证码接口使用的是Get请求,只有URL的请求参数,没有请求体,请求头不用修改,Postman默认会填写

请求方法、请求URL截图:

获取验证码接口的断言分析

分析返回数据,发现返回的是一个图片

根据HTTP协议,服务器返回的图片数据类型一般在响应头中查看Content-Type,如下图所示,发现响应头中的Content-Type的类型为image/png

综上,断言代码可以对请求头中的Content-Type进行断言,判断是否为一个图片,可以这么写:

设计“登陆成功”测试案例

设置请求方法,请求URL和请求体

请求头:

请求头需要设置为:application/x-www-form-urlencoded(其实也是点击上图中的x-www-form-urlencoded就能自动生成)

其他相关请求头参数使用Postman默认设置的

登陆成功的返回值为:

根据返回值分析,可以简单的断言status和msg以及http响应状态码就可以简单判断是否登陆成功(这里为了简化流程,并未判断数据准确性)

所以断言代码可以按照下图进行设计:

设计“用户名不存在测试用例”

接下来的4个接口测试用例脚本,都是一样的模式

设置请求头、请求体、URL请求参数、请求方法如图所示:

用户名不存在的断言代码:

设计“密码错误”测试案例

请求头,请求体,URL请求参数,请求方式:

密码错误的断言代码:

设计“用户名长度超出11位”测试案例

请求头,请求体,URL请求参数,请求方式:

用户名超出11位的断言代码

设计密码为空的测试案例

请求头,请求体,URL请求参数,请求方式:

密码为空的返回值为:

密码为空断言代码:

使用Collection Runner批量运行编写的测试用例

保存后,我们在Collection Runner中运行设计的测试用例脚本

进入Collection Runner后,什么都不用改,直接点击底部的蓝色按钮运行(注意要翻到最底部才能看见运行按钮):

查看运行效果:

可以看到,5个测试用例,获取验证码的断言有5个;其他测试接口有15个,一共20个断言,都测试通过了!

这样,设计接口测试用例就完成了

四. 数据驱动

目标:使用数据文件驱动登陆接口的用例

步骤:

·分析用例数据,设计数据文件

·在TPshop测试脚本中,使用参数关联技术,关联参数到数据文件中的数据

1、分析用例数据,设计数据文件

根据之前的用例设计,登陆接口中,我们需要传入服务器的数据有3条,分别是

• username

• password

• verify_code

断言需要校验的数据有3条,分别是

• HTTP响应状态码

• status

• msg。

按照分析,我们的数据文件也需要包括这几个参数,分别用于HTTP请求的输入和输出后的预期结果校验。

根据Postman数据的格式要求,可以分为CSV和Json,这里使用CSV来设计,

根据上文分析,最终得出了如图所示的数据文件:

username:登陆的手机号码

password:密码

verify_code:登陆的验证码(万能验证码)

httpresponsecode:http响应状态码

status:请求成功后,返回的json数据中status的值

msg:请求成功后,返回的json数据中msg的值

case_name:描述我们这一组数据的测试点

这样我们的数据文件就设计好了,接下来,要把数据文件引入到我们的TPshop商城项目的测试脚本中。

2、在TPshop测试脚本中,使用参数关联技术,关联参数到数据文件中的数据。

我们的目标就是把数据文件中的6个参数,分别关联到请求数据和断言数据中,怎么做呢,这里要介绍两个方法

• 请求参数可以通过{{var}}来引用

• 断言中的数据,由于是在Tests中写入的脚本,并不能直接通过{{var}}来引用,所以需要引用Postman的相关API进行调用,如:pm.variables.get("var")

登陆接口请求体参数化,修改登陆接口的请求数据,如图所示:

注意参数名称要和数据文件中的名称保持一致

// HTTP响应状态码var http_response_code = pm.variables.get("http_response_code");// 获取返回的statusvar response_status = pm.variables.get("status");// 获取返回的msgvar response_msg = pm.variables.get("msg");// 引用获取的HTTP返回状态码进行断言pm.test("HTTP返回响应状态码", function () {pm.response.to.have.status(http_response_code);});// 引用获取的status的值进行断言pm.test("返回数据中的status值为1", function () {var jsonData = pm.response.json();pm.expect(jsonData.status).to.eql(response_status);});// 引用获取的msg的值进行断言pm.test("返回数据中的message值为登陆成功", function () {var jsonData = pm.response.json();pm.expect(jsonData.msg).to.eql(response_msg);});

这样,我们对登陆接口进行了改动,使其能够读取数据文件中的数据。

然后我们再使用Collection Runner 单独运行登陆成功接口,查看结果

选择登陆成功模块运行

注意和下图保持一致,只运行登陆成功接口

选择数据文件

点击下图中的Data Select File 选择数据文件

选择自己构造的数据文件:tpshop_login.csv

数据文件结构再贴一下

选择成功后效果:

点击Preview查看数据(必须做,如果数据文件不能Preview则需要解决数据问题,中文乱码也需要解决)

然后点击运行,查看结果:

运行完后,发现1个登陆接口运行了5次,比我们之前设计了5个测试用例要简便得多,这样,我们就实现了通过5条数据,完成5个测试点的验证。

问题:为什么能这么做。。

答:因为Postman每次迭代,会自动读取下一行数据,所以第一次迭代,运行的是第一条:

第二次迭代运行第二条:

依次类推,直到数据读完


总结

通过以上5个步骤,我们通过使用Postman实现了数据驱动测试,我们回顾一下每个步骤的作用:

第一步:理解数据驱动的概念

第二步:设计测试用例

第三步:用Postman实现测试用例,编写测试脚本

第四步:实现数据驱动

看完大家想必已经迫不及待想要试一试了,赶快打开Postman来试一试吧!

postman 使用_如何使用Postman实现数据驱动?相关推荐

  1. chrome postman插件_一款 Postman 的开源替代品: Postwoman

    阅读文本大概需要 6 分钟. 1. 前言 大家都知道,Postman是一个非常受欢迎的API接口调试工具,提供有Chrome扩展插件版和独立的APP,不过它的很多高级功能都需要付费才能使用. 如果你连 ...

  2. chrome postman插件_接口测试工具之Postman(原创)

    前言: 说到web服务接口,目前主流已经从SOAP的Web Service接口转为REST API接口了, 所以我们主要就是讲解对REST API服务接口的测试. 实际上众多开发者对REST的理解程度 ...

  3. go 捕获网卡http_接口测试工具Postman(三)使用postman抓包捕获HTTP请求-Go语言中文社区...

    一.捕获HTTP请求 Postman提供了轻松查看和捕获应用程序中发送和接收的实际HTTP请求流量的工具, 可以在Postman本机应用程序中使用内置代理进行抓包. 1.postman内置代理 pos ...

  4. post postman 传递数组对象_如何使用postman做接口测试

    一,接口测试是什么 什么是接口测试,不说广泛的概念,直接电脑打开浏览器,进入开发者工具(F12)随意进入一些网站可以看到下面左侧栏出现了一系列的数据: 上面条数据都是一个单独的接口,点击单个接口,右边 ...

  5. 测试流程图_挑战美国Postman VS 龙测搭积木接口测试,谁与争锋

    大家做接口测试是不是还在用Postman, SoapUI,JMeter以及公司内部开发的接口测试平台呢?那是不是觉得比较烦呢?比如每次运行下一个接口总是要运行一下登录接口来复制其生成的登录Token? ...

  6. chrome postman插件_收集了一些Chrome插件神器,助你快速成为老司机

    刚开始开发项目的时候,我一直都在用火狐,因为它有一个fireBug插件,特别好用(目前已不支持),也不知道什么时候,就一直用起来Chrome浏览器了,可能是因为它有强大的插件作为后盾吧.开发了这么多年 ...

  7. postman用法_应该是接口测试神器postman最全的用法总结了

    下载和安装比较简单,就不再介绍 一.Postman的基础功能 二.接口请求流程 1. GET 请求 GET请求:点击Params,输入参数及value,可输入多个,即时显示在URL链接上, 所以,GE ...

  8. jeesite如何已生成数据的数据源_如何在postman中自动生成接口请求数据,这个功能你需要知道,可结合浏览器和两大抓包工具使用...

    在做接口调试或测试时,请求中的每个参数都要按照接口文档填写到postman的对应位置中,很是麻烦.那是否有这样一个功能?可以帮我们自动生成接口数据,无需修改,直接发送请求就可以呢. 这里面我们需要借助 ...

  9. postman压测_只会postman单接口测试?快看看这里

    谢谢打开这篇文章的每个你 关注我们 点击右上角 ··· 设为星标 前言: 在日常测试过程中,经常遇到需求涉及到多个系统,但是其他系统进度减慢无法进行测试,此时就需要"mock",也 ...

最新文章

  1. 连接centos7桌面方法
  2. joomla 插入百度地图
  3. ssh升级后+sftp+java_java中使用JSCH包,SFTP及SSH2文件操作及远程命令执行(改进)...
  4. Python-OpenCV 处理视频(四): 运动检测
  5. matlab r2012a win10,vs2010和Matlab R2012a 混合编程
  6. C# html的Table导出到Excel中
  7. 【STM32】GPIO之蜂鸣器
  8. Netfilter深度解剖
  9. C++中,float double区别
  10. R语言实现混频数据分析实例----midas回归预测
  11. 开源管理软件 OpenEMR 被曝多个漏洞,可被用于攻陷医疗基础设施
  12. 2021CCF推荐国际学术会议A类及相关领域介绍
  13. Ubuntu安装配置tftp服务器
  14. stm32+esp8266+app inventor简单小制作
  15. mysql front下载,MySQL-Front下载
  16. 使用Python提取Excel中单元格中的某一段内容(包含某特定字符且前后以逗号作为分隔符的内容)
  17. 【Unity】创建一个自己的AR安卓程序
  18. CDH6 安装 Apache atlas
  19. T61迅盘无法正常工作
  20. python中左对齐问题_[Python] print中的左右对齐问题

热门文章

  1. 约瑟夫死亡游戏算法问题
  2. 基于OpenCV的数字识别系统
  3. OpenCV卡尔曼滤波介绍与代码演示
  4. 链表问题11——两个单链表相交的系列问题(二):找到两个无环链表的交点
  5. 信息解码(Message Decoding)ACM题目
  6. iphone默认的heic格式怎么在电脑中打开
  7. JDBC连接Oracle数据库测试
  8. 学习笔记CB013: TensorFlow、TensorBoard、seq2seq
  9. Uber将整体式API拆分为微服务
  10. Quickhit快速击键