您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

软件测试教程:如何使用Postman实现数据驱动?

时间:2021-06-23 09:52:55  来源:  作者:黑马程序员

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

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

第二步:设计测试用例

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

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

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


一. 什么是数据驱动?

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

步骤:无

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

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

二. 设计测试用例

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

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

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

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

软件测试教程:如何使用Postman实现数据驱动?

 

三. 编写测试用例脚本

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

步骤:

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

·实现测试用例脚本

1.编写TPshop商城的测试集

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

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

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

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

软件测试教程:如何使用Postman实现数据驱动?

 

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

软件测试教程:如何使用Postman实现数据驱动?

 

2.实现测试用例

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

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

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

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

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

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

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

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

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

请求方法、请求URL截图:

软件测试教程:如何使用Postman实现数据驱动?

 

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

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

软件测试教程:如何使用Postman实现数据驱动?

 

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

软件测试教程:如何使用Postman实现数据驱动?

 

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

软件测试教程:如何使用Postman实现数据驱动?

 

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

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

软件测试教程:如何使用Postman实现数据驱动?

 

请求头:

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

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

软件测试教程:如何使用Postman实现数据驱动?

 

登陆成功的返回值为:

软件测试教程:如何使用Postman实现数据驱动?

 

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

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

软件测试教程:如何使用Postman实现数据驱动?

 

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

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

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

软件测试教程:如何使用Postman实现数据驱动?

 

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

软件测试教程:如何使用Postman实现数据驱动?

 

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

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

软件测试教程:如何使用Postman实现数据驱动?

 

密码错误的断言代码:

软件测试教程:如何使用Postman实现数据驱动?

 

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

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

软件测试教程:如何使用Postman实现数据驱动?

 


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

软件测试教程:如何使用Postman实现数据驱动?

 

设计密码为空的测试案例

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

软件测试教程:如何使用Postman实现数据驱动?

 

密码为空的返回值为:

软件测试教程:如何使用Postman实现数据驱动?

 

密码为空断言代码:

软件测试教程:如何使用Postman实现数据驱动?

 


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

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

软件测试教程:如何使用Postman实现数据驱动?

 

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

软件测试教程:如何使用Postman实现数据驱动?

 

查看运行效果:

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

软件测试教程:如何使用Postman实现数据驱动?

 

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

四. 数据驱动

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

步骤:

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

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

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

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

• username

• password

• verify_code

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

• HTTP响应状态码

• status

• msg。

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

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

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

软件测试教程:如何使用Postman实现数据驱动?

 


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")

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

软件测试教程:如何使用Postman实现数据驱动?

 

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

登陆接口断言代码(图贴不下)

// HTTP响应状态码

var http_response_code = pm.variables.get("http_response_code");

// 获取返回的status

var response_status = pm.variables.get("status");

// 获取返回的msg

var 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 单独运行登陆成功接口,查看结果

选择登陆成功模块运行

软件测试教程:如何使用Postman实现数据驱动?

 

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

软件测试教程:如何使用Postman实现数据驱动?

 

选择数据文件

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

软件测试教程:如何使用Postman实现数据驱动?

 

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

软件测试教程:如何使用Postman实现数据驱动?

 

数据文件结构再贴一下

软件测试教程:如何使用Postman实现数据驱动?

 

选择成功后效果:

软件测试教程:如何使用Postman实现数据驱动?

 

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

软件测试教程:如何使用Postman实现数据驱动?

 

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

软件测试教程:如何使用Postman实现数据驱动?

 

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

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

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

软件测试教程:如何使用Postman实现数据驱动?

 

第二次迭代运行第二条:

软件测试教程:如何使用Postman实现数据驱动?

 

依次类推,直到数据读完


总结

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

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

第二步:设计测试用例

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

第四步:实现数据驱动

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



Tags:Postman   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
在之前写的日志《https://mp.csdn.net/mp_blog/creation/editor/113105977》中写了RSA签名,忘记写了验签,现在补上该部分。结合上述文档,获取到服务端返回的数据后,需要使用自己...【详细内容】
2021-08-04  Tags: Postman  点击:(79)  评论:(0)  加入收藏
要实现Postman的数据驱动,主要分为五个大步骤第一步:什么是数据驱动?第二步:设计测试用例第三步: 在Postman中编写测试用例脚本第四步:分析脚本,设计数据文件,并通过参数化关联...【详细内容】
2021-06-23  Tags: Postman  点击:(99)  评论:(0)  加入收藏
需求背景工作中很多接口自测时,需要拿到登录后token放到请求头header中,才可以进行自测。有没有好方法搞一次,可以任意自测?实现目标接口自测时,支持多账号切换,同时也支持原来方...【详细内容】
2021-05-14  Tags: Postman  点击:(223)  评论:(0)  加入收藏
前阶段做了一个小调查,发现软件测试行业做功能测试和接口测试的人相对比较多。在测试工作中,有高手,自然也会有小白,但有一点我们无法否认,就是每一个高手都是从小白开始的,所以今...【详细内容】
2020-09-09  Tags: Postman  点击:(132)  评论:(0)  加入收藏
作为一个程序猿,写网络接口是家常便饭了。正所谓:工欲善其事,必先利其器!如果你还在自己写代码做测试,那么你来对地方了,今天我就给大家介绍一款测试网络接口的“军刀”,Postman。...【详细内容】
2020-06-20  Tags: Postman  点击:(100)  评论:(0)  加入收藏
一、Postman背景介绍用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的Firebug等网页调...【详细内容】
2019-09-27  Tags: Postman  点击:(193)  评论:(0)  加入收藏
Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。...【详细内容】
2019-09-27  Tags: Postman  点击:(156)  评论:(0)  加入收藏
▌简易百科推荐
摘 要 (OF作品展示)OF之前介绍了用python实现数据可视化、数据分析及一些小项目,但基本都是后端的知识。想要做一个好看的可视化大屏,我们还要学一些前端的知识(vue),网上有很多比...【详细内容】
2021-12-27  项目与数据管理    Tags:Vue   点击:(1)  评论:(0)  加入收藏
程序是如何被执行的  程序是如何被执行的?许多开发者可能也没法回答这个问题,大多数人更注重的是如何编写程序,却不会太注意编写好的程序是如何被运行,这并不是一个好...【详细内容】
2021-12-23  IT学习日记    Tags:程序   点击:(9)  评论:(0)  加入收藏
阅读收获✔️1. 了解单点登录实现原理✔️2. 掌握快速使用xxl-sso接入单点登录功能一、早期的多系统登录解决方案 单系统登录解决方案的核心是cookie,cookie携带会话id在浏览器...【详细内容】
2021-12-23  程序yuan    Tags:单点登录(   点击:(8)  评论:(0)  加入收藏
下载Eclipse RCP IDE如果你电脑上还没有安装Eclipse,那么请到这里下载对应版本的软件进行安装。具体的安装步骤就不在这赘述了。创建第一个标准Eclipse RCP应用(总共分为六步)1...【详细内容】
2021-12-22  阿福ChrisYuan    Tags:RCP应用   点击:(7)  评论:(0)  加入收藏
今天想简单聊一聊 Token 的 Value Capture,就是币的价值问题。首先说明啊,这个话题包含的内容非常之光,Token 的经济学设计也可以包含诸多问题,所以几乎不可能把这个问题说的清...【详细内容】
2021-12-21  唐少华TSH    Tags:Token   点击:(9)  评论:(0)  加入收藏
实现效果:假如有10条数据,分组展示,默认在当前页面展示4个,点击换一批,从第5个开始继续展示,到最后一组,再重新返回到第一组 data() { return { qList: [], //处理后...【详细内容】
2021-12-17  Mason程    Tags:VUE   点击:(14)  评论:(0)  加入收藏
什么是性能调优?(what) 为什么需要性能调优?(why) 什么时候需要性能调优?(when) 什么地方需要性能调优?(where) 什么时候来进行性能调优?(who) 怎么样进行性能调优?(How) 硬件配...【详细内容】
2021-12-16  软件测试小p    Tags:性能调优   点击:(19)  评论:(0)  加入收藏
Tasker 是一款适用于 Android 设备的高级自动化应用,它可以通过脚本让重复性的操作自动运行,提高效率。 不知道从哪里听说的抖音 app 会导致 OLED 屏幕烧屏。于是就现学现卖,自...【详细内容】
2021-12-15  ITBang    Tags:抖音防烧屏   点击:(23)  评论:(0)  加入收藏
11 月 23 日,Rust Moderation Team(审核团队)在 GitHub 上发布了辞职公告,即刻生效。根据公告,审核团队集体辞职是为了抗议 Rust 核心团队(Core team)在执行社区行为准则和标准上...【详细内容】
2021-12-15  InfoQ    Tags:Rust   点击:(24)  评论:(0)  加入收藏
一个项目的大部分API,测试用例在参数和参数值等信息会有很多相似的地方。我们可以复制API,复制用例来快速生成,然后做细微调整既可以满足我们的测试需求1.复制API:在菜单发布单...【详细内容】
2021-12-14  AutoMeter    Tags:AutoMeter   点击:(20)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条