一.获取返回包数据

  在提取参数时,当 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_参数化进阶的更多相关文章

  1. pytest封神之路第五步 参数化进阶

    用过unittest的朋友,肯定知道可以借助DDT实现参数化.用过JMeter的朋友,肯定知道JMeter自带了4种参数化方式(见参考资料).pytest同样支持参数化,而且很简单很实用. 语法 在& ...

  2. pytest封神之路第零步 快速入门

    背景:本文是在系列第五篇发表后的补充篇章,第一篇介绍了tep,可能对不熟悉pytest的朋友不够友好,特意补充入门篇,帮大家快速了解如何动手写pytest.如果你是从这篇文章第一次阅读,那么请忽略以上 ...

  3. JUnit5学习之七:参数化测试(Parameterized Tests)进阶

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  4. 性能测试十二:jmeter进阶之java请求参数化

    如项目中的ip.端口号之类的,都可以在此代码中定义 public Arguments getDefaultParameters() { // TODO Auto-generated method st ...

  5. Pytest进阶之参数化

    前言 unittest单元测试框架使用DDT进行数据驱动测试,那么身为功能更加强大且更加灵活的Pytest框架怎么可能没有数据驱动的概念呢?其实Pytest是使用@pytest.mark.parame ...

  6. Jmeter(三十四) - 从入门到精通进阶篇 - 参数化(详解教程)

    1.简介 前边三十多篇文章主要介绍的是Jmeter的一些操作和基础知识,算是一些初级入门的知识点,从这一篇开始我们就来学习Jmeter比较高级的操作和深入的知识点了.今天这一篇主要是讲参数化,其实前边 ...

  7. Jenkins 进阶篇 - 参数化构建

    我们在构建任务时经常会遇到这样的情景,一个任务配置好了以后,在后面的构建过程中,又会修改一些配置.例如,我们构建项目的代码可能是拉取指定的分支或者是Tag进行构建,又或者是在构建是需要指定特定的运行平 ...

  8. [C#] 进阶 - LINQ 标准查询操作概述

    LINQ 标准查询操作概述 序 “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> ...

  9. C++_进阶之函数模板_类模板

     C++_进阶之函数模板_类模板 第一部分 前言 c++提供了函数模板(function template.)所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体制定,用一个虚拟的类型来 ...

随机推荐

  1. 关于for与forEach遍历集合中对集合进行操作的问题

    遍历List集合,在循环中再对List集合进行操作,有时候会遇到ConcurrentModificationException(并发修改异常);其实只有在forEach循环集合再对集合操作会发生异常: ...

  2. pyecharts简介

    一.概况 Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可. 而 Python 是一门富有表达力的语言,很适合用于数据处理.当数据分析遇上数据可 ...

  3. 转:KVC 与 KVO 理解

    KVC 与 KVO 理解 On 2012 年 6 月 7 日, in iPhone, by donly KVC 与 KVO 是 Objective C 的关键概念,个人认为必须理解的东西,下面是实例讲 ...

  4. iOS-启动项目(二)引入第三方库

    摘要 项目中很大几率会用到第三方库,通过 Pod 方式引入第三方库是效率很高的方式,这里介绍一个新的项目搭建 Pod 方式的环境,方便项目中引入第三方库文件. 刚创建的项目中如果需要用到第三方库,常用 ...

  5. aha

    欢迎使用 MWeb MWeb 是专业的 Markdown 写作.记笔记.静态博客生成软件,目前已支持 Mac,iPad 和 iPhone.MWeb 有以下特色: 软件本身: 使用原生的 macOS 技 ...

  6. Linux 01 计算机硬件之冯诺依曼体系

    1. 计算机硬件软件体系 1.1 冯诺依曼体系结构 (1) 计算机处理的数据和指令用二进制表示 (2) 按顺序执行指令 (3) 计算机硬件:运算器.控制器.储存器.输入设备和输出设备. 1.2 计算机 ...

  7. [BUUCTF]REVERSE——findit

    findit 步骤: apk文件,直接用apkide打开,找到findit文件 查看了所有的函数,没找到有关flag的线索,但是找到了一串奇怪的16进制 将第一串转换一下,感觉第二串应该是flag 拿 ...

  8. Sql中的小技巧

    1.where 字段名 regexp '正则表达式' 正则符号: ^ $ . [ ] * | . 表示1个任意字符 * 表示前面重复0次,或者任意次 ^ 开始 $ 结尾 [] 范围 | 或 sql示例 ...

  9. WebApi的前端调用

    WebApi前端调用 HTML代码: <!DOCTYPE html><html> <head> <meta charset="utf-8" ...

  10. MySQL实现主从库,AB复制配置

    AB复制是一种数据复制技术,是myslq数据库提供的一种高可用.高性能的解决方案. AB复制的模式:一主一从 .一主多从.双主.多主多从 复制的工作原理:要想实现ab复制,那么前提是master上必须 ...