HttpRunner_参数化进阶
一.获取返回包数据
在提取参数时,当 HTTP 的请求响应结果为 JSON 格式,则可以采用.运算符的方式,逐级往下获取到参数值;响应结果的整体内容引用方式为 content 或者 body,如上面的content.errorCode
二.调用其他接口返回值
(1)前置接口中设置(支持多个)指定的参数
关键字:extract 参数名:token 参数值:content.token
extract:
token: content.token
(2)引用接口中调用该参数名
关键字:$参数名
token: $token
三.yml文件
一个接口在testcases目录下建一个yml(json)文件,内部存储该接口的所有测试场景
四.设置全局变量并引用
(1)设置全局变量参数
关键字:variables 参数名:device_sn 参数值:FwgRiO7CNA50DSU
variables:
device_sn: FwgRiO7CNA50DSU
(2)引用接口中调用该参数名
关键字:$参数名
device_sn: $device_sn
五.调用函数
(1)定义函数
debugtalk.py中编写函数
(2)调用函数
关键字:${函数名($参数)}
举例:debugtalk.py中定义的函数是get_name(n),则引用时是${get_name(1)}
六.参数化驱动(最简单的方式)
(1)新建一个存储参数化数据的yml文件,内容如下:
config:
name:
testcases:
create user $user_id:
testcase: testcases\test_demo.yml --- 需要执行参数化的用例路径
parameters:
user_id: ["index", "index1"] ---需要执行参数话的数据及其参数
(2)引用参数
关键字:$参数名
$user_id
七.参数化驱动(复杂的方式)
注意:从 1.5.11 版本开始,HttpRunner 不再支持测试步骤(teststep)层级的参数化数据驱动,只支持测试用例(testcase)层级的参数化驱动配置,所以下面这种参数化方式已经不支持,比如下图所示:

(1)支持的参数化方式有3中
参数名称的定义分为两种情况:
a.独立参数单独进行定义;
b.多个参数具有关联性的参数需要将其定义在一起,采用短横线(-)进行连接。
数据源指定支持三种方式:
a.在 YAML/JSON 中直接指定参数列表
b.通过内置的 parameterize(可简写为P)函数引用 CSV 文件
c.调用 debugtalk.py 中自定义的函数生成参数列表
(2)在testsuites目录下新建一个存储参数化数据的yml文件,内容如下:
config:
name:
testcases:
create user $username-$password:
testcase: testcases\test_demo.yml
parameters:
- index: ["test", "test1"] --- 单一参数列表
- username-password:
- ["user1", "111111"]
- ["user2", "222222"]
- ["user3", "333333"] --- 多参数列表
- resName-status: ${P(data/account.csv)} ---外部csv文件
(3)使用参数
关键字:$参数名
/api/main/$index/$username/$password/$resName/$status
(4)运行结果:

八.使用指定的报告模板+指定报告生成路径
hrun testcases\test_data.yml --report-template E:/autotest/api_autotest/logs/report.html --report-dir E:/autotest/api_autotest/logs/
九.保存测试过程数据
以log日志文件形式保存(此处名字都是一样的,对于多次运行结果会覆盖,可优化)
hrun testcases\test_data.yml --save-tests
(1).XXX.loaded.json:测试用例加载后的数据结构内容,加载包括测试用例文件(YAML/JSON)、debugtalk.py、.env 等所有项目文件
(2).XXX.parsed.json:测试用例解析后的数据结构内容,解析内容包括测试用例引用(API/testcase)、变量计算和替换、base_url 拼接等
(3).XXX.summary.json:测试报告生成前的数据结构内容。
十.单独使用HttpRunner
(1)新建.py文件,内容如下:
# coding:utf-8
from httprunner.api import HttpRunner
kwargs = {'failfast': False, 'report_dir': 'E:\\demo\\test'} # 看api.py中__init__方法参数
runner = HttpRunner(**kwargs)
result_runner = runner.run('E:\\autotest\\api_autotest\\testcases\\test_demo.yml') # 执行指定目录下用例
print(result_runner) # 输出报告地址
summary = runner.summary # 获取执行结果,需要在run方法后
print(summary)
(2)运行结果如下:
HttpRunner_参数化进阶的更多相关文章
- pytest封神之路第五步 参数化进阶
用过unittest的朋友,肯定知道可以借助DDT实现参数化.用过JMeter的朋友,肯定知道JMeter自带了4种参数化方式(见参考资料).pytest同样支持参数化,而且很简单很实用. 语法 在& ...
- pytest封神之路第零步 快速入门
背景:本文是在系列第五篇发表后的补充篇章,第一篇介绍了tep,可能对不熟悉pytest的朋友不够友好,特意补充入门篇,帮大家快速了解如何动手写pytest.如果你是从这篇文章第一次阅读,那么请忽略以上 ...
- JUnit5学习之七:参数化测试(Parameterized Tests)进阶
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 性能测试十二:jmeter进阶之java请求参数化
如项目中的ip.端口号之类的,都可以在此代码中定义 public Arguments getDefaultParameters() { // TODO Auto-generated method st ...
- Pytest进阶之参数化
前言 unittest单元测试框架使用DDT进行数据驱动测试,那么身为功能更加强大且更加灵活的Pytest框架怎么可能没有数据驱动的概念呢?其实Pytest是使用@pytest.mark.parame ...
- Jmeter(三十四) - 从入门到精通进阶篇 - 参数化(详解教程)
1.简介 前边三十多篇文章主要介绍的是Jmeter的一些操作和基础知识,算是一些初级入门的知识点,从这一篇开始我们就来学习Jmeter比较高级的操作和深入的知识点了.今天这一篇主要是讲参数化,其实前边 ...
- Jenkins 进阶篇 - 参数化构建
我们在构建任务时经常会遇到这样的情景,一个任务配置好了以后,在后面的构建过程中,又会修改一些配置.例如,我们构建项目的代码可能是拉取指定的分支或者是Tag进行构建,又或者是在构建是需要指定特定的运行平 ...
- [C#] 进阶 - LINQ 标准查询操作概述
LINQ 标准查询操作概述 序 “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> ...
- C++_进阶之函数模板_类模板
C++_进阶之函数模板_类模板 第一部分 前言 c++提供了函数模板(function template.)所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体制定,用一个虚拟的类型来 ...
随机推荐
- 【Linux】【Services】【Disks】bftfs
1. 简介 1.1 Btrfs(B-tree,Butter FS,Better FS) 1.2. 遵循GPL,由oracle在2007年研发,支持CoW 1.3. 主要为了替代早期的ext3/ext4 ...
- SpringBoot 项目不加载 application.properties 配置文件
起因:新安装的idea第一次运行springboot项目报url错误(Failed to configure a DataSource: 'url' attribute is not specifie ...
- proxy跨域
跨域 浏览器访问非同源的网址时,会被限制访问,出现跨域问题. 解决方案: 1.response 添加 header(CORS) 2.JSONP 方式 3.全局对象+iframe (1)document ...
- Samba 源码解析之内存管理
由于工作需要想研究下Samba的源码,下载后发现目录结构还是很清晰的.一般大家可能会对source3和source4文件夹比较疑惑.这两个文件夹针对的是Samba主版本号,所以你可以暂时先看一个.这里 ...
- Redis篇:持久化、淘汰策略,缓存失效策略
关注公众号,一起交流,微信搜一搜: 潜行前行 redis 持久化 redis 的数据是保存再系统内存里面的.持久化就是把内存的数据转移到磁盘中,redis 的持久化策略有两种:RDB.AOF RDB ...
- 误入 GitHub 游戏区,意外地收获颇丰
这天中午,我和往常一样就着美食视频吃完午饭,然后起身泡了一杯"高沫". 我闻着茶香享受着午后的阳光,慵懒地坐在工位上习惯性的打开 GitHub 游荡,酝酿着睡意. 误打误撞,我来到 ...
- JS代码日期格式化
function dateConvert(format,value) { var date = new Date(value); var o = { "M+" : date.get ...
- 【LeetCode】982. Triples with Bitwise AND Equal To Zero 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
- 【LeetCode】974. Subarray Sums Divisible by K 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 动态规划 前缀和求余 日期 题目地址:https:/ ...
- 【LeetCode】938. Range Sum of BST 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 递归 日期 题目地址:https://leetcod ...
