首页 > 其他分享 >httprunner 4.x学习 -9.parameters 参数化

httprunner 4.x学习 -9.parameters 参数化

时间:2023-05-09 22:36:54浏览次数:42  
标签:123456 httprunner name parameters 参数 user password

前言

httprunner 4.x 实现参数化使用parameters 关键字,数据源有三种方式

  • 1.在yaml 文件中直接写测试数据源
  • 2.测试数据源写到csv文件
  • 3.自定义函数,函数返回列表形式数据

参数配置

参数名称的定义分为两种情况:

  • 独立参数单独进行定义;
  • 多个参数具有关联性的参数需要将其定义在一起,采用短横线(-)进行连接。

数据源指定支持三种方式:

  • 在 YAML/JSON 中直接指定参数列表:该种方式最为简单易用,适合参数列表比较小的情况
  • 通过内置的 parameterize(可简写为P)函数引用 CSV 文件:该种方式需要准备 CSV 数据文件,适合数据量比较大的情况
  • 调用 debugtalk.py 中自定义的函数生成参数列表:该种方式最为灵活,可通过自定义 Python 函数实现任意场景的数据驱动机制,当需要动态生成参数列表时也需要选择该种方式

三种方式可根据实际项目需求进行灵活选择,同时支持多种方式的组合使用。
假如测试用例中定义了多个参数,那么测试用例在运行时会对参数进行笛卡尔积组合,覆盖所有参数组合情况。

单个参数时参数化

先准备测试数据,准备四组登录用的账号和密码,账号为test1,test2,test3,test4,密码统一设置为123456。

参数user账号数据,设置对应的值 ["test1", "test2", "test3", "test4"],定义单个参数用variables,定义参数化用parameters

# 作者-上海悠悠 wx:283340479
# blog地址 https://www.cnblogs.com/yoyoketang/

config:
    name: login case
    parameters:
        user: [test1, test2, test3, test4]

teststeps:
-
  name: post
  request:
    method: POST
    url: http://httpbin.org/post
    json:
      username: ${user}
      password: "123456"
  validate:
    - eq: [status_code, 200]

如果参数化里面的数据只有一个,比如psw对应的值只有一个,parameters 也可以设置 password的值

# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/

config:
    name: login case
    parameters:
        user: [test1, test2, test3, test4]
        password: 123456

variables 和 parameters 设置相同名称变量时,parameters 优先级大于variables
完整的 login_params.yml 脚本如下

# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/

config:
    name: login case
    variables:
        user: test
        password: 123456
    parameters:
        user: [test1, test2, test3, test4]


teststeps:
-
  name: post
  request:
    method: POST
    url: http://httpbin.org/post
    json:
      username: ${user}
      password: ${password}
  validate:
    - eq: [status_code, 200]

运行用例,会自动生成四个测试用例

hrp run test_p2.yml --gen-html-report

关联性的参数化

上面的案例多个账号,密码都是一样的,如果密码不一样呢?上面的就行不通了,所以针对于一个账号对应一个密码,这种一一对应的关系,可以用关联性的参数化

# 作者-上海悠悠 wx:283340479
# blog地址 https://www.cnblogs.com/yoyoketang/

config:
    name: login case
    parameters:
        user-password:
        - [test1, "123456"]
        - [test2, "123456"]
        - [test3, "123456"]
        - [test4, "123456"]

teststeps:
-
  name: post
  request:
    method: POST
    url: http://httpbin.org/post
    json:
      username: ${user}
      password: ${password}
  validate:
  - eq: [status_code, 200]

笛卡尔积组合

比如测试账号有四种["test1", "test2", "test3", "test4"],密码也有四种 ["123456", "123456", "123456", "123456"]
用笛卡尔积组合的话,就是4*4=16种组合

# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/

config:
    name: login case
    parameters:
        user: [test1, test2, test3, test4]
        password: ["123456", "123456", "123456", "123456"]

teststeps:
-
  name: post
  request:
    method: POST
    url: http://www.example.com/
    params:
      username: ${user}
      password: ${password}
  validate:
  - eq: [status_code, 200]

这样运行会生成16组用例

标签:123456,httprunner,name,parameters,参数,user,password
From: https://www.cnblogs.com/yoyoketang/p/17385640.html

相关文章

  • php获取未解码之前的原始接口请求参数
    前言目前的几个项目,业务方基本都使用POST方式请求接口,我们本机磁盘会保留一份请求的原始参数用于请求分析和问题排查使用,一般有问题,也会基于seqid(请求唯一id)捞到日志,copy参数模拟请求看是否复现,但一直有个比较蛋疼的问题,PHP的$_POST,$_GET,$_REQUEST这些获取参数的方法获取到的......
  • Linux 处理CPU和内存参数的方式总结
    Linux处理CPU和内存参数的方式总结关闭NUMA,关闭透明大页比较简单的方法:vim/etc/default/grub在GRUB_CMDLINE_LINUX里面添加配置:transparent_hugepage=nevernuma=off修改后的配置为:GRUB_CMDLINE_LINUX="resume=/dev/mapper/uos-swaprd.lvm.lv=uos/rootrd.lvm.......
  • KingbaseES V8R3 集群运维系列 -- sync_flag参数配置
    ​案例说明:在KingbaseESV8R3集群一主二备的架构中,配置了流复制为同步(sync)模式,但是集群启动后,流复制状态中显示备库是async模式(备库和主库数据已经同步),从备库的recovery.log日志也可以看到,备库启动后被复制模式设置为async模式。如下图备库recovery.log:适用版本:KingbaseES......
  • httprunner 4.x学习 -8.base_url 环境地址的使用
    前言config中有个base_url关键字可以设置环境地址,这样其它接口就只需写相对地址了base_url环境地址比如我要测试的API接口如下http://httpbin.org/get第一个是get请求http://httpbin.org/post第二个是post请求如果一个测试用例,有多个步骤中,测试环境地址不变http://......
  • JMeter参数化的多种方式
    JMeter中常见的参数化方式包括:CSV数据文件:从CSV文件中读取数据,并将其用于请求参数。数据库访问:从数据库中读取数据,并将其用于请求参数。用户定义的变量:手动定义变量值,并将其用于请求参数。随机变量:随机生成变量值,并将其用于请求参数。Counter:生成一个递增的计数器,并将其......
  • SpringBoot - 参数接收方式
    SpringBoot-参数接收方式·前言·使用@PathVariable接收路径中的参数·使用@RequestParam获取路径中?后的参数·使用@RequestBody获取Map对象·使用@RequestBody获取实体对象前言使用@PathVariable接收路径中的参数@GetMapping(value="/param/{id}")publicStri......
  • js获取url中的参数
    functiongetUrlParam(strUrl){varurl,pos,urlStr,para;url=strUrl||window.location.href;pos=url.indexOf("?")if(pos<=0)return;url=url.substring(pos+1);varparams=url.split("&");......
  • httprunner 4.x学习 - 7.环境变量.env 的使用
    前言一般来说,在进行实际应用的开发过程中,应用会拥有不同的运行环境,通常会有以下环境:本地开发环境测试环境生产环境在不同环境中,我们可能会使用不同的数据库或邮件发送等配置,这时候则需要通过.env文件来针对不同的运行环境作不同的设置。环境变量基础知识在自动化测试中......
  • Qt音视频开发45-音视频类结构体参数的设计
    一、前言视频监控内核组件重构和完善花了一年多时间,整个组件个人认为设计的最好的部分就是各种结构体参数的设计,而且分门别类,有枚举值,也有窗体相关的结构体参数,解码相关的结构体参数,同时将部分常用的结构体参数的获取和设置单独提供了函数,参阅海康大华等大厂的sdk的设计方式,也是......
  • httprunner 4.x学习 - 6.debugtalk辅助函数的使用
    前言httprunner4.x可以支持go语言和python语言写辅助函数,本篇主要介绍python语言写辅助函数。debugtalk辅助函数在项目根目录新建debugtalk.py文件写辅助函数可以实现自动化生成动态参数。如下生成时间戳和随机字符串示例#debugtalk.pyimporttimeimportuuidde......