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命令用于执行压测。
- 创建测试工程

假设当前路径存在demo目录,会报错

- har2cases使用(支持录制回放功能)
假设我们想测试下baidu首页的访问,我们可以打开fiddler抓包,打开postman模拟发送http请求
抓取数据包baidu.har
执行
- 看一下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的内容。

- 示例系统的测试
让我们了解base_url、.env、variables、extract、debugtalk.py的用法
先定义一个login.yaml作为登录用例
4.1 debugtalk.py(python文件,用于存放一些常用的自定义函数)
4.2 再看下export的用法(获取测试用例的执行结果中的参数值,供下一个测试用例使用)
4.3 再看看parameters的用法
- hook机制
- 生成测试报告
httprunner3.1.6的一些bug
httprunner3.1.6运行前必须修改代码,否则parameters参数会失效!!!
runner.py此处代码改成这样

httprunner 的报告提示 OSError: [WinError 6] 句柄无效
这是使用hrun 会出现的问题,可使用hmake + pytest执行用例,可规避
📎 参考文章
- 点击下方进入httprunner的git项目
httprunner
httprunner • Updated Jan 8, 2024
欢迎您在底部评论区留言,一起交流~
- 作者:leolin
- 链接:https://leolin66.top/article/httprunner_introduce
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。