httprunner 3.x接口自动化测试使用分享
00 分钟
2023-11-30
2023-12-20
type
status
date
slug
summary
tags
category
icon
password
😀
简介:
学习深度:代码优于官方文档优于小爽文 可以先理解官方文档,再详细的分析代码结构,理解设计思想 HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份YAML/JSON/pytest脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。
中文用户手册:httprunner中文文档 开发设计文档:https://debugtalk.com/tags/HttpRunner/

httprunner设计理念

充分复用优秀的开源项目,不追求重复造轮子,而是将强大的轮子组装成战车 遵循 约定大于配置 的准则,在框架功能中融入自动化测试最佳工程实践 追求投入产出比,一份投入即可实现多种测试需求
 

httprunner核心特性

继承 Requests 的全部特性,轻松实现 HTTP(S) 的各种测试需求 采用 YAML/JSON 的形式描述测试场景,保障测试用例描述的统一性和可维护性 借助辅助函数(py),在测试脚本中轻松实现复杂的动态计算逻辑 支持完善的测试用例分层机制,充分实现测试用例的复用 测试前后支持完善的 hook 机制 响应结果支持丰富的校验机制 基于 HAR 实现接口录制和用例生成功能(har2case) 结合 Locust 框架,无需额外的工作即可实现分布式性能测试 执行方式采用 CLI 调用,可与 Jenkins 等持续集成工具完美结合 测试结果统计报告简洁清晰,附带详尽统计信息和日志记录 极强的可扩展性,轻松实现二次开发和 Web 平台化
 

实战

httprunner命令: 在命令行工具输入httprunner -h,从输出可以看到,httprunner提供run、startproject、har2case、make四个子命令: run命令用于运行测试用例 startproject命令用于创建httprunner脚手架项目 har2case命令用于将har文件转成httprunner使用的yml/json文件 make命令用于将yml/json用于转成pytest用例
其它命令: httprunner还提供了三个子命令的缩写,httprunner run可使用hrun命令代替,同样的,hmake和har2case分别是httprunner make和httprunner har2case的缩写。另外,还提供了locusts命令用于执行压测。
  1. 创建测试工程
notion image
假设当前路径存在demo目录,会报错
notion image
  1. har2cases使用(支持录制回放功能)
假设我们想测试下baidu首页的访问,我们可以打开fiddler抓包,打开postman模拟发送http请求 抓取数据包baidu.har 执行
  1. 看一下yaml如何写的
config:用例的全局配置
  • name:测试用例的名称
  • variables:定义的全局变量,作用域为整个用例。每个测试步骤都可以引用config variables。也就是说,step variables 优先级高于 config variables
  • verify:指定是否验证服务器的 TLS 证书。如果我们想记录测试案例执行的 HTTP 请求内容,就需要设置。如果没有设置 verify 属性或者值不为 True,则会发生 SSLError。 通常设置为False,当请求https请求时,就会跳过验证。如果你运行时候发现抛错SSLError,可以检查一下是不是verify没传,或者设置了True。
  • base_url:指定被测系统的 host 部分,如果指定了 base_url,则 teststep 中的 url 只能设置相对路径部分。这对于在不同的测试环境中切换非常有用。
  • parameters(可选的)全局参数,用于实现数据化驱动,作用域为整个用例。
  • export(可选的):指定输出的测试用例变量。将每个测试用例看作一个黑盒,config variables是输入变量,config export是输出变量。当一个测试用例在另一个测试用例的步骤中被引用时,config export将被提取并在随后的测试步骤中使用。
 
teststeps:是一个列表,表示测试步骤,每一个测试步骤都有独立的一套参数
  • name:测试步骤名
  • request:request请求内容,相当于python request应有的参数
  • validate:校验规则
  • extract(可选): 从当前 HTTP 请求的响应结果中提取参数,并保存到参数变量中(例如token),后续测试用例可通过$token的形式进行引用。原理:利用jmespath 提取Json response body的内容。
notion image
  1. 示例系统的测试
让我们了解base_url、.env、variables、extract、debugtalk.py的用法
先定义一个login.yaml作为登录用例
4.1 debugtalk.py(python文件,用于存放一些常用的自定义函数)
4.2 再看下export的用法(获取测试用例的执行结果中的参数值,供下一个测试用例使用)
4.3 再看看parameters的用法
  1. hook机制
  1. 生成测试报告

httprunner3.1.6的一些bug

⚠️
httprunner3.1.6运行前必须修改代码,否则parameters参数会失效!!!
runner.py此处代码改成这样
notion image
⚠️
httprunner 的报告提示 OSError: [WinError 6] 句柄无效
这是使用hrun 会出现的问题,可使用hmake + pytest执行用例,可规避

📎 参考文章

  • 点击下方进入httprunner的git项目
httprunner
httprunnerUpdated Jan 8, 2024
💡
欢迎您在底部评论区留言,一起交流~
上一篇
python基础教程
下一篇
git基础教程

评论
Loading...