4.httprunner-参数化和数据驱动
- 参数化在config中使用parameters关键字
- httprunner2.x 是在testsuite中实现参数化
- httprunner3.x 是在testcase中的config实现参数化
- 测试搜索功能,只有一个输入框,但是有十种不同的搜索关键字
- 测试账号登录功能,需要输入账号密码,然后按照等价类划分后有20种组合情况
- 单个独立参数:举例的第一个场景,只需要变化搜索关键字这一个参数
- 多个具有关联性的参数:举例的第二个场景,需要变化账号密码两个参数,并且两个参数关联组合
- 对于参数而言,我们可能具有一个参数列表,运行时按照不同的规则去取值
- 例如顺序取值、随机取值、循环取值等
- 这就是典型的参数化和数据驱动
- 假设我们用4个账号登录,密码都是123456
- 我们通过parameters设置key为user,value为4个账号的列表
- 那么运行的时候,user依次循环取列表的值,供下方引用变量请求
- 列表有多少个参数,接口就会对应执行请求多少次,会有多少个用例
- 设置参数化的value必须是list
config:
name: 登录用例
base_url: ${ENV(base_url)}
# 设置变量
variables:
password: 123456
#设置参数化
parameters:
user:[test1,test2,test3,test4]
teststeps:
-
name: step-登录
request:
url: /v1/login/
method: POST
params:
user: $user #引用参数化命令
password: $password
- 场景:我们需要每个账号对应一个单独的密码来实现场景
- 我们继续parameters设置参数化,而多个不同的参数,我们用-隔开
- 每个账号对应一个单独的密码,我们需要两个参数,user和password
- 这两个参数,我们用-隔开定义两个key,然后一一对应下面的参数
- 执行的时候,两个key依次循环取对应值供下方引用
config:
name: 登录用例
base_url: ${ENV(base_url)}
parameters:
# 设置user和password两个key,用-隔开
# 每次按顺序循环取对应的值
user-password:
-[test1,123456]
-[test2,654321]
-[test3,987544]
-[test4,678910]
teststeps:
-
name: step-登录
request:
url: /v1/login/
method: POST
params:
user: $user
password: $password
- 比如测试账号有4种,[test1,test2,test3,test4]
- 密码也有4种,[123456,654321,56789,98765]
- 用笛卡尔积组合的话,就是4*4=16种组合用例
- 我们可以在parameters下单独设置两个key,user和password
- 将用户名和密码进行全组合,即每个用户名的取值都与每个密码的取值成对进行组合应
config:
name: 登录用例
base_url: ${ENV(base_url)}
parameters:
user: [test1,test2,test3,test4]
password: [123456,654321,56789,98765] teststeps:
-
name: step-登录
request:
url: /v1/login/
method: POST
params:
user: $user
password: $password
- httprunner参数化数据源指定支持三种方式
- 在YAML/JSON中直接指定参数列表:该种方式最为简单易用,适合参数列表比较小的情况
- 通过内置的parameterize(可简写为P)函数引用CSV文件:该方式需要准备CSV数据文件,适合数据量比较大的情况
- 调用debugtalk.py中自定义的函数生成参数列表:该方式最为灵活,可通过自定义python函数实现任意场景的数据驱动机制,当需要动态生成参数列表时也需要选择该方法
#csv文件格式
#每列的第一行编写key,下面编写对应的值
#直接pycharm编辑每行用逗号隔开
user,password
test,1234
test2,1234

config:
name: 登录用例
base_url: ${ENV(base_url)}
parameters:
# 引用
user-password: ${P(data/user.csv)}
teststeps:
-
name: step-登录
request:
url: /v1/login/
method: POST
params:
user: $user
password: $password
extract:
uid: body.uid
validate:
- eq: [status_code,200]
#debugtalk.py
def get_user():
return [
{'user': 'test1'},
{'user': 'test2'},
{'user': 'test3'},
{'user': 'test4'},
{'user': 'test5'},
]
#yaml引用函数,引用格式:${函数名}
#返回的列表有多少个参数,就依次循环取值执行多少次用例
config:
name: 登录用例
base_url: ${ENV(base_url)}
variables:
password: 123456
parameters:#引用函数
user: ${get_user()}
teststeps:
-
name: step-登录
request:
url: /v1/login/
method: POST
params:
user: $user
password: $password
extract:
uid: body.uid
validate:
- eq: [status_code,200]
#debugtalk
def get_user_password(n):
#n是要生成的数量
account = []
for i in range(1, n+1):
account.append({'user': 'test' + f'{i}', 'password': '123456'})
return account
#yaml文件引用
config:
name: 登录用例
base_url: ${ENV(base_url)}
parameters:
#两个key用-分隔
user-password: ${get_user_password(4)}
teststeps:
-
name: step-登录
request:
url: /v1/login/
method: POST
params:
user: $user
password: $password
extract:
uid: body.uid
validate:
- eq: [status_code,200]
4.httprunner-参数化和数据驱动的更多相关文章
- 【JMeter】【接口测试】csv参数化,数据驱动,自动化测试
csv参数化,数据驱动 首先我们要有一个接口测试用例存放的地方,我们这里用EXCEL模板管理,里面包含用例编号.入参.优先级.请求方式.url等等. 1:新建一个txt文件,命名为sjqd,后缀名 ...
- HttpRunner 参数化数据驱动
HttpRunner 2.0 参数化数据驱动案例,废话不说,直接上干货. 1.测试用例目录结构 api:接口集 testcases:测试用例 testsuites:测试套件 data: ...
- HTTPRunner实践二——数据驱动
基于文档http://cn.httprunner.org/advanced/data-driven/ 场景一:用例集+独立参数+参数列表 1.原始用例文件savePatient_01.yml - co ...
- csv参数化,数据驱动
首先我们要有一个接口测试用例存放的地方,我们这里用EXCEL模板管理,里面包含用例编号.入参.优先级.请求方式.url等等. 1:新建一个txt文件,命名为sjqd,后缀名改为csv,右键excel格 ...
- Httprunner学习
一.简介 HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份YAML/JSON脚本,即可实现自动化测试.性能测试.线上监控.持续集成等多种测试需求. 核心特性: 继 ...
- Httprunner的使用
一.httprunner的简介 HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试.性能测试.线上监控.持续集成等多种 ...
- 行为驱动:Cucumber + Selenium + Java(四) - 实现测试用例的参数化
在上一篇中,我们介绍了Selenium + Cucumber + Java框架下的使用Tags对测试用例分组的实现方法,这一篇我们用数据表格来实现测试用例参数化. 4.1 什么是用例参数化 实际测试中 ...
- 数据驱动 vs 关键字驱动:对搭建UI自动化测试框架的探索
UI自动化测试用例剖析 让我们先从分析一端自动化测试案例的代码开始我们的旅程.以下是我之前写的一个自动化测试的小Demo.这个Demo基于Selenium与Java.由于现在Selenium在自动化测 ...
- pytest和unittest中参数化如何做
参数化应用场景,一个场景的用例会用到多条数据来进行验证,比如登录功能会用到正确的用户名.密码登录,错误的用户名.正确的密码,正确的用户名.错误的密码等等来进行测试,这时就可以用到框架中的参数化,来便捷 ...
随机推荐
- 基于vue2.0原理-自己实现MVVM框架之computed计算属性
基于上一篇data的双向绑定,这一篇来聊聊computed的实现原理及自己实现计算属性. 一.先聊下Computed的用法 写一个最简单的小demo,展示用户的名字和年龄,代码如下: <body ...
- 案例复现,带你分析Priority Blocking Queue比较器异常导致的NPE问题
摘要:本文通过完整的案例复现来演示在什么情况会触发该问题,同时给出了处理建议.希望读者在编程时加以借鉴,避免再次遇到此类问题. 本文分享自华为云社区<Priority Blocking Queu ...
- Apache 首次亚洲在线峰会: Workflow & 数据治理专场
背景 大数据发展到今天已有 10 年时间,早已渗透到各个行业,数据需 求越来越多,这使得大数据 业务间的依赖关系也越来越复杂,另外也相信做数据的伙伴肯定对如何治理数据也是痛苦之至,再加上现今云原生时代 ...
- 2021年5月15日海外 Meetup 演讲内容分享
北京时间 2021 年 5 月 16 日 05:00-08:00 我们与Apache ShardingSphere 联合举办了第一场海外Meetup,感谢各位小伙伴的参与,让本次活动圆满结束. 同时我 ...
- Apache DolphinScheduler 1.2.0 task 任务存储结构说明
本文章经授权转载 Table of Contents 任务总体存储 Shell节点 SQL节点 存储过程节点 SPARK节点 MapReduce(MR)节点 Python节点 Flink节点 HTTP ...
- .NET 扩展 官方 Logger 实现将日志保存到本地文件
.NET 项目默认情况下 日志是使用的 ILogger 接口,默认提供一下四种日志记录程序: 控制台 调试 EventSource EventLog 这四种记录程序都是默认包含在 .NET 运行时库中 ...
- LuoguP1922 女仆咖啡厅桌游吧 (树形动态规划)
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...
- 延时任务-基于netty时间轮算法实现
一.时间轮算法简介 为了大家能够理解下文中的代码,我们先来简单了解一下netty时间轮算法的核心原理 时间轮算法名副其实,时间轮就是一个环形的数据结构,类似于表盘,将时间轮分成多个bucket(比如: ...
- [HFCTF2020]EasyLogin-1|JWT身份伪造
1.打开之后只有一个登陆界面和注册界面,右键检查发现app.js代码,结果如下: app.js代码如下: /** * 或许该用 koa-static 来处理静态文件 * 路径该怎么配置?不管了先填个根 ...
- CF914G Sum the Fibonacci (快速沃尔什变换FWT + 子集卷积)
题面 题解 这是一道FWT和子集卷积的应用题. 我们先设 cnt[x] 表示 Si = x 的 i 的数量,那么 这里的Nab[x]指满足条件的 Sa|Sb=x.Sa&Sb=0 的(a,b)二 ...