IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> httprunner3.x版本学习 -> 正文阅读

[开发测试]httprunner3.x版本学习

1.简介
HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份YAML/JSON脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。
2.特点

  • 继承 Requests 的全部特性,轻松实现 HTTP(S) 的各种测试需求
  • 以YAML或JSON格式定义testcase,使用pytest运行,更加简洁优雅 有了pytest,成百上千的插件随时可用
  • 支持variables/extract/validate/hooks机制来创建极其复杂的测试场景
  • 借助辅助函数(debugtalk.py),任何函数都可以在测试用例的任何部分中使用
  • 支持完善的测试用例分层机制,充分实现测试用的复用
  • 使用python的第三方库jmespath,让提取和验证json响应更简单
  • 基于 HAR 实现接口录制和用例生成功能(har2case)
  • 结合 Locust 框架,无需额外的工作即可实现分布式性能测试
  • 执行方式采用 CLI 调用,可与 Jenkins 等持续集成工具完美结合
  • 集成了Allure,让测试报告更加漂亮,内容更丰富。
  • 极强的可扩展性,轻松实现二次开发和 Web 平台化
    3.安装
    pip install httprunner
    检验是否安装成功
    hrun -V
    显示出版本号,说明安装成功
    4.快速生成项目
    httprunner startproject -h
    5.项目结构说明
  • debugtalk.py 放置在项目根目录下(借鉴了pytest的conftest.py文件的设计)
  • .env 放置在项目根目录下,可以用于存放一些环境变量
  • reports 文件夹:存储 HTML 测试报告
  • testcases 用于存放测试用例
  • har 可以存放录制导出的.har文件
    6.转换为pytest文件
    har2case baidu_home.har
    7.转换为YAML/JSON
    har2case baidu_home.har
    在后面加-2y/--to-yml或者 -2j/--to-json
    8.用例结构
  • 每个testcase都是HttpRunner的子类
  • 必须有两个类属性:config和teststeps
  • 单个teststeps列表中的单个Step内部通过链式调用(RunRequest().get().with_params().with_headers().with_cookies().validate().assert_equal())
    9.测试用例(config)
    name (必填)
    指定测试用例名称。这将显示在执行日志和测试报告中
    base_url (选填)
    如果base_url指定,则teststep中的url只能设置相对路径部分
    variables(选填)
    指定测试用例的公共变量。每个测试步骤都可以引用未在步骤变量中设置的配置变量
    verity(选填)
    指定是否验证服务器的TLS证书,通常设置为False,当请求https请求时,就会跳过验证
    export (选填)
    指定导出的测试用例会话变量,当一个测试用例在另一个测试用例的步骤中被引用,并且将被提取一些会话变量以在后续测试步骤中使用时,则提取的会话变量应在配置export部分中进行配置。将测试用例的某些变量指定为全局变量
    在这里插入图片描述
    10.测试用例(teststep)
    RunRequest(name)
    RunRequest 在一个步骤中用于向API发出请求,并对响应进行一些提取或验证
    name
    RunRequest 的参数用于指定测试步骤名称,该名称将显示在执行日志和测试报告中
    .with_variables
    指定测试步骤变量。每个步骤的变量都是独立的,因此,如果要在多个步骤中共享变量,则应在配置变量中定义变量。此外,步骤变量将覆盖配置变量中具有相同名称的变量。(PS:注意参数传递的格式使用**{},使用关键字参数解包的方式进行参数传递给with_variables),参数引用使用"变量名, 如果是函数引用使用{函数名()}"
    .method(url)
    指定HTTP方法和SUT的URL
    如果base_url在config中设置,则url只能设置相对路径部分。如果在Config中设置了baseurl,method中只能设置相对路径,可选参数为get/post/put/delete/等
    .with_params
    传params参数
    .with_headers
    传headers参数
    .with_cookies
    传cookie
    .with_data
    传data参数
    .with_json
    传json参数
    .extract
    数据提取
    .with_jmespath:使用jmespath提取JSON响应主体
    with_jmespath(jmes_path:文字,var_name:文字)
    jmes_path:jmespath表达式,有关更多详细信息,请参考 JMESPath 教程
    var_name:存储提取值的变量名,可以在后续测试步骤中引用它
    .validate
    断言
    .assert_XXX:使用jmespath提取JSON响应主体并使用期望值进行验证。
    assert_XXX(jmes_path:文本,期望值:任何,消息:文本=“”)
    jmes_path:jmespath表达式,有关更多详细信息,请参考JMESPath教程
    expected_value:指定的期望值,变量或函数引用也可以在此处使用
    消息(可选):用于指示断言错误的原因

11.参数化
参数化有三种方式
1.parameters 字段
第一种,使用httprunner改造过的pytest参数化,通过parameters这个字段去引用
@pytest.mark.parametrize(“param”,Parameters(
{
“first”: [“first”, “second”],
“second”: [‘random string’,‘string number’]
}
))
2.读取csv文件
#代码中如此书写
@pytest.mark.parametrize(“param”, Parameters(
{“username-password”: “${parameterize(data.csv)}”}
))

使用csv文件进行参数化的时候,Parameters的键里每一个-代表一个参数分割。例如username 和 password是两个参数,相应的,csv文件中的列名应该和参数名一致
数据文件
username,password
name1,1212
name2,4545
3.debugtalk.py文件中的函数
代码中这样调用:
@pytest.mark.parametrize(“param”, Parameters(
{“username”: “${get_username()}”}
))
以上方式是使用debugtalk中的方法返回值
在debugtalk里面定义:
def get_username():
return [
{“username”: “111111”},
{“username”: “222222”},
{“username”: “333333”},
{“username”: “444444”},
{“username”: “555555”},
{“username”: “666666”},
]

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-07-14 23:15:03  更:2021-07-14 23:15:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/7 14:01:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码