参数化

  • 前言
  • 参数化
    • 直接指定参数列表
      • 独立参数
      • 关联参数
      • 笛卡尔积组合
    • CSV文件实现参数化
      • 独立参数
      • 关联参数
    • debugtalk函数实现参数化
      • 独立参数
      • 关联参数
  • 参数化运行

前言

  • 本篇来学习Httprunner中参数化–parameters关键字的使用

参数化

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

直接指定参数列表

独立参数
  • 场景:不同测试账号,使用同一个密码

示例

config:name: login casebase_url: "https://postman-echo.com"variables:user: testpassword: 123456parameters:user: ["test1", "test2", "test3", "test4"]   # 使用相同变量名user, parameters优先级> variables优先级teststeps:
-name: step loginvariables:password: 123456request:url: /api/v1/loginmethod: POSTjson:username: $user   # 引用变量 password: $passwordvalidate:- eq: [status_code, 200]
关联参数
  • 对于具有关联性的多个参数,比如username和password,那么可以按照如下方式进行配置

config:name: test suite demobase_url: "https://postman-echo.com"testcases:
-name: test case 1parameters:username-password:- [ "user1", "111111" ]- [ "user2", "222222" ]- [ "user3", "333333" ]testcase: /path/to/testcase1
  • 进行该配置后,测试用例在运行时就会对username和password实现数据驱动,即分别使用 {“username”: “user1”, “password”: “111111”}、{“username”: “user2”, “password”: “222222”}、{“username”: “user3”, “password”: “333333”} 运行 3 次测试,并且保证参数值总是成对使用。
笛卡尔积组合
  • 测试账号有四种[“test1”, “test2”, “test3”, “test4”],密码也有四种[“123456”, “1234567”, “12345678”, “123456789”],用笛卡尔积组合的话,就是4*4=16种组合
config:name: login casebase_url: "https://postman-echo.com"variables:user: testpassword: 123456parameters:user: ["test1", "test2", "test3", "test4"]  passwprd :  ["123456", "1234567", "12345678", "123456789"]teststeps:
-name: step loginvariables:password: 123456request:url: /api/v1/loginmethod: POSTjson:username: $user   # 引用变量 password: $passwordvalidate:- eq: [status_code, 200]

CSV文件实现参数化

独立参数
  • 假设项目的根目录下有 data 文件夹,user.csv 位于其中,那么 user.csv 的引用描述如下

user.csv

user
test1
test2
test3
test4

yaml


config:name: test suite demobase_url: "https://postman-echo.com"testcases:
-name: test case 1parameters:user: ${P(data/user.csv)}  # 通过内置的 parameterize(可简写为 P)函数引用 CSV 文件testcase: /path/to/testcase1
关联参数
  • 对于具有关联性的多个参数,例如 username 和 password,那么就可以创建 account.csv

account.csv

username,password
test1,111111
test2,222222
test3,333333

yaml


config:name: test suite demobase_url: "https://postman-echo.com"testcases:
-name: test case 1parameters:username-password: ${P(data/account.csv)}testcase: /path/to/testcase1

debugtalk函数实现参数化

独立参数
  • 在 debugtalk.py 中定义一个函数,返回参数列表
    ** debugtalk.py**
def get_user_id():return [{"user_id": 1001},{"user_id": 1002},{"user_id": 1003},{"user_id": 1004}]

yaml


config:name: test suite demobase_url: "https://postman-echo.com"testcases:
-name: test case 1parameters:user_id: ${get_user_id()}  # ${函数名} 方式引用debugtalk.py中的函数testcase: /path/to/testcase1
关联参数

** debugtalk.py**

def get_account(num):accounts = []for index in range(1, num+1):accounts.append({"username": "user%s" % index, "password": str(index) * 6},)return accounts

yaml


config:name: test suite demobase_url: "https://postman-echo.com"testcases:
-name: test case 1parameters:username-password: ${get_account(10)}  # 生成10组数据testcase: /path/to/testcase1

参数化运行

  • 完成以上参数定义和数据源准备工作之后,参数化运行与普通测试用例的运行完全一致。 采用hrun命令运行自动化测试:
 hrun tests/data/demo_parameters.yml

06-Httprunner-参数化相关推荐

  1. Jenkins 流水线语法 06 options 运行时选项和 parameters参数化构建

    选项参数都是在字符界面配置的. options {buildDiscarder logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: ...

  2. pytest实战--参数化parametrize+前置fixture

    文章目录 参数化 parametrize 适用场景 一个典型的例子 前置fixture+参数化 适用场景 一个典型的例子 示例2 个人疑问? pytest既可以用来做单元测试,也可以用来做自动化接口测 ...

  3. 参数化测试 junit_JUnit 5 –参数化测试

    参数化测试 junit JUnit 5令人印象深刻,尤其是当您深入研究扩展模型和体系结构时 . 但是从表面上讲,编写测试的地方,开发的过程比革命的过程更具进化性 – JUnit 4上没有杀手级功能吗? ...

  4. 参数化测试 junit_使用JUnit 5进行更清洁的参数化测试

    参数化测试 junit 参数化单元测试的总体思路是对不同的数据运行相同的测试方法. 在JUnit 4中创建参数化测试远非完美. 现有体系结构存在许多问题:将参数定义为类字段,并需要使用构造函数来创建它 ...

  5. 使用JUnit 5进行更清洁的参数化测试

    参数化单元测试的总体思路是对不同的数据运行相同的测试方法. 在JUnit 4中创建参数化测试远非完美. 现有体系结构存在许多问题:将参数定义为类字段,并且需要使用构造函数来创建它们,不能将参数化和非参 ...

  6. JUnit 5 –参数化测试

    JUnit 5令人印象深刻,尤其是当您深入研究扩展模型和体系结构时 . 但是从表面上讲,编写测试的地方,开发的过程比革命的过程更具进化性 – JUnit 4上没有杀手级功能吗? 幸运的是,至少有一个: ...

  7. 综合前置接口报文规范_浅谈用HttpRunner进行接口自动化测试

    在参与我们测试平台开发的时候,结识了HttpRunne这个优秀的开源接口测试框架,初步研究发现HttpRunner可以非常方便.非常高效地实现接口自动化测试. 01HttpRunner和常用接口测试框 ...

  8. spring mysql防注入攻击_【spring】(填坑)sql注入攻击 - 持久层参数化

    结果 填坑失败,并没有看懂是如何检测sql攻击的. 只能说的是:建议都使用参数化传递sql语句参数.(所以,用hibernate.mybatis等框架的真不用太担心sql攻击问题.) 前言 在上文中的 ...

  9. 使用sqlhelper类查询时假如不需要参数化,那到时SqlParameter这个传参怎么处理

    发表于: 2015-04-25 22:53:31 我在学写SqlHelper类.用SqlParameter[]数组做为参数. 我按条件查询时,可以弄个参数化 但是查询时假如并不需要参数化,那到时Sql ...

  10. httprunner踩坑之路

    httprunner踩坑 1.get接口参数使用params传入,例如: name: get_stroy_content base_url: http://xxx.xxx.xx.xx:xxxx var ...

最新文章

  1. !! 机器学习常用工具
  2. WebAssembly 系列(一):生动形象地介绍 WebAssembly
  3. 互联网人知道几个情人节?
  4. php版 v2.0,KangPHP v2.0 正式版
  5. 计算机桌面堆,桌面堆 Desktop heap设置
  6. 我的世界服务器自定义怪物怎么用,我的世界 教你自定义怪物属性
  7. 用C语言实现回调函数
  8. 20180925-1 每周例行报告
  9. 剖析虚幻渲染体系(16)- 图形驱动的秘密
  10. 笔记本电脑硬件升级-低成本、大幅提升体验
  11. 有哪些「饥饿营销」的失败案例?
  12. OpenAI发布ChatGPT:程序员瞬间不淡定了
  13. php软件运行时出现forbidden,wampserver服务器出现Forbidden错误解决方法
  14. 什么是太阳光模拟器整车全光谱阳光模拟系统?
  15. 永强教你加解密:对称篇(一)
  16. 复盘苏宁收购红孩子案例——思考VC与垂直电商的未来
  17. mongoDB 修改密码
  18. SpringBoot+Mybatis-Plus项目接入ClickHouse数据源
  19. TDSQL水平扩容实践案例
  20. 用input标签 文件,多文件上传

热门文章

  1. kettle Call From LAPTOP-14BPR3NI/192.168.1.2 to locahost:8020 failed on connection
  2. html内部css调节背景图片的大小,css中怎么改变背景图片大小?
  3. 需要点智商才能看懂的恐怖故事,你能看懂多少个?
  4. Java项目:基于java+ssm生鲜超市进销存管理系统--计算机毕业设计
  5. (转)安装完Fedora 18后需要做的事情
  6. 剪辑师的基本素养--了解四种特写类型
  7. [游戏技术] Hunter Mode 猎人模式v1.8(重制版)
  8. linux下安装微软雅黑字体库
  9. java 求100天之后是周几
  10. 全自动加药装置详细介绍