Httprunner 世界这么大还是遇见你

554 阅读3分钟

背景

因为工作中CI/CD需要接入自动化测试,所以研究了一些主流的测试框架,无意之中遇到它,有点小惊喜。

介绍

首先感谢HttpRunner的所有者开源此测试框架,HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。

运行环境

HttpRunner 是一个基于 Python 开发的测试框架,可以运行在 macOS、Linux、Windows 系统平台上。 python 版本 2.7/3.5/3.6/3.7/3.8,安装Python

以下演示基于macOS,Python版本3.9,Httprunner版本3.1.6

安装

安装python3好后,pip3默认安装,安装httprunner执行命令:

pip3 install httprunner

执行命令hrun -V查看版本, 正常则表示安装成功

image.png

安装成功后,系统中会新增如下 5 个命令:

  • httprunner: 核心命令
  • ate: 曾经用过的命令(当时框架名称为 ApiTestEngine),功能与 httprunner 完全相同
  • hrun: httprunner 的缩写,功能与 httprunner 完全相同
  • locusts: 基于 Locust 实现性能测试
  • har2case: 辅助工具,可将标准通用的 HAR 格式(HTTP Archive)转换为Pytest/YAML/JSON格式的测试用例

工具

  1. 编辑器:使用Pycharm,安装
  2. 抓包工具: 使用Charles,安装

开始

  1. 使用脚手架快速创建一个demo项目

    运行httprunner startproject hrun3-demo 初始化一个名为 hrun3-demo 的项目。

    image.png

  2. 项目结构

    image.png

  3. 添加测试用例,可以使用har文件生成测试用例或者手动编写测试用例

  • har文件生成用例

    使用抓包工具 Charles 将抓取得到的数据包导出为标准通用的 HAR 格式(HTTP Archive),然后 HttpRunner 实现了将 HAR 格式的数据包转换为Pytest/YAML/JSON格式的测试用例文件。

    image.png

    image.png

    image.png

    运行命令har2case har/login.har生成测试用例

    image.pngV3.0.7之后,har2case默认将har文件转为pytest文件

    image.png

    当然你可以使用命令-2y/--to-yml将har文件转为YAML格式文件

    image.png

    image.png

    或者使用命令-2j/--to-json将har文件转为JSON格式文件

    image.png

    image.png

  • 手动编写测试用例 (python)

    本次使用python编写测试用例,当然你也可以编写YAML/JSON格式的测试用例,在httprunner里,这三种格式的文件是完全等同的。

    在项目的testcases目录下新建文件login_test.py

    image.png 每个用例都是HttpRunner的子类,且必须包含属性:configteststeps

    image.png 此处的get_user_agent()是在 debugtalk.py 里自定义的一个python函数,引用方式${fun()}

    image.png

  1. 运行测试用例使用命令 hrun path/*.py 或者 hrun path/*.yml 或者 hrun path/*.json

    这里使用 hrun testcases/login_test.py 运行用例,如果需要测试报告,需再加上 --html=reports/report.html

    image.png

    运行之后会在reports目录下生成测试报告,可以在浏览器中打开查看

    image.png

    image.png ⚠️ 这里报告中用例Failed是因为接口是随便写的,请在测试的时候使用正常可用的接口测试。

总结:

以上只是以测试demo进行分享,更加详细的使用请参考官方文档。

参考资料

中文文档

官方文档

Github

声明

本文部分内容来源网络,如有侵权请及时告知,我将在最短的时间内删除。