Httprunner框架学习(一)环境搭建和用例生成
前言
HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试。
官方文档:https://docs.httprunner.org/
具有以下优点:
- 继承 Requests 的全部特性,轻松实现 HTTP(S) 的各种测试需求
- 采用 YAML/JSON 的形式描述测试场景,保障测试用例描述的统一性和可维护性
- 借助辅助函数(debugtalk.py),在测试脚本中轻松实现复杂的动态计算逻辑
- 支持完善的测试用例分层机制,充分实现测试用例的复用
- 测试前后支持完善的 hook 机制
- 响应结果支持丰富的校验机制
- 基于 HAR 实现接口录制和用例生成功能(har2case)
- 结合 Locust 框架,无需额外的工作即可实现分布式性能测试
- 执行方式采用 CLI 调用,可与 Jenkins 等持续集成工具完美结合
- 测试结果统计报告简洁清晰,附带详尽统计信息和日志记录
- 极强的可扩展性,轻松实现二次开发和 Web 平台化
环境准备
httprunner目前有3个版本,1.x、2x和3x版本
HttpRunner是使用Python开发的,它支持Python 3.6+和大多数操作系统。Python的组合,3.6/3.7/3.8并macOS/Linux/Windows在GitHub-Actions上进行测试
安装
HttpRunner在上可用PyPI,可以通过安装pip。
pip3 install httprunner
如果要跟上最新版本,可以使用github存储库URL安装。
pip3 install git+https://github.com/httprunner/httprunner.git@master
如果?如果您HttpRunner之前已经安装过并且想要升级到最新版本,则可以使用该-U选项。
pip3 install -U httprunner
pip3 install -U git+https://github.com/httprunner/httprunner.git@master
检查安装
安装HttpRunner后,系统将添加5个命令。
- httprunner:主命令,用于所有功能
- hrun:的别名httprunner run,用于运行YAML / JSON / pytest测试用例
- hmake:的别名httprunner make,用于将YAML / JSON测试用例转换为pytest文件
- har2case:的别名httprunner har2case,用于将HAR转换为YAML / JSON测试用例
- locusts:用于对locust进行负载测试
安装完成查看HttpRunner版本:
httprunner -V # hrun -V
3.1.4
使用案例
我们使用禅道的登录接口为例如
登录接口相关文档信息如下:
- 访问地址:http://58.87.64.140:8088/zentao/user-login.html
- 请求类型:POST
- 请求头部:application/x-www-form-urlencoded
- 请求参数:
- 使用httpapi命令行工具,访问后测试接口报文信息如下
1、使用Chrales抓包工具 ,抓到禅道的登录接口,保存为test_loginzentao.har文件
2、接下来使用har2case转换成httprunner的YAML格式脚本用例,保存为test_login.yml
转换后生成的yaml文件
config:
name: testcase description
variables: {}
verify: false
teststeps:
- name: /zentao/user-login.html
request:
cookies:
JSESSIONID.378a684c: node0jexby5wcf7tf1xxf1ezsh8stl1.node0
JSESSIONID.4c5dfe6a: node056yih37791f0nudquqarcox51.node0
ajax_quickJump: 'on'
bugModule: '0'
device: desktop
lang: zh-cn
lastProduct: '1'
lastProject: '1'
preBranch: '0'
preProductID: '1'
qaBugOrder: id_desc
screenResolution: 1920x1080
theme: default
windowHeight: '872'
windowWidth: '1634'
zentaosid: ljunb0hduvqim7e5qa48e5mfh7
data:
account: admin
password: feb822e39749290d6909f9eca2ad4a37
referer: http://58.87.64.140:8088/zentao/my/
headers:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cache-Control: max-age=0
Connection: keep-alive
Content-Length: '113'
Content-Type: application/x-www-form-urlencoded
Cookie: lang=zh-cn; device=desktop; theme=default; lastProduct=1; lastProject=1;
bugModule=0; preBranch=0; preProductID=1; qaBugOrder=id_desc; ajax_quickJump=on;
windowWidth=1634; windowHeight=872; zentaosid=ljunb0hduvqim7e5qa48e5mfh7;
screenResolution=1920x1080; JSESSIONID.4c5dfe6a=node056yih37791f0nudquqarcox51.node0;
JSESSIONID.378a684c=node0jexby5wcf7tf1xxf1ezsh8stl1.node0
Host: 58.87.64.140:8088
Origin: http://58.87.64.140:8088
Referer: http://58.87.64.140:8088/zentao/user-login.html
Upgrade-Insecure-Requests: '1'
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/80.0.3987.100 Safari/537.36
method: POST
url: http://58.87.64.140:8088/zentao/user-login.html
validate:
- eq:
- status_code
- 200
- eq:
- headers.Content-Type
- text/html; Language=UTF-8;charset=UTF-8
将.har文件转换成yaml、json文件的 命令:
har2case xxx.tar -2y 转换为yaml
har2case xxx.tar -2j 转换为json
3、执行脚本
运行用例很简单,直接在cmd里面,cd到test_login.yml目录,运行
hrun test_loginzentao.yml
执行结果如下:

4、查看运行结果&报告
- httprunner默认安装类了pytest-html插件
hrun test_loginzentao.yml --html=reports/zentao.login.html
测试报告如下:


浙公网安备 33010602011771号