欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

自动化框架 Httprunner 介绍

程序员文章站 2022-06-04 16:17:49
...

1. 是什么

HttpRunner 是一个简单,优雅但功能强大的 HTTP(S)测试框架。

目前 Httprunner 的最新版本是 3.0,它是使用 Python 开发的,支持 Python3.6+ 和大多数操作系统。作者李隆之前是大疆的测试开发工程师,项目起源于大疆内部的测试需求,之后转为开源项目。

它产生的背景主要是:

1.业务线多

2.高速发展和扩张:业务增长、人员增长

3.普遍具有功能回归测试、持续集成、线上监控等需求

是不是跟我们平时工作中的情况很相似?

市面上已经有很多工具,但是传统自动化测试会存在一些问题

1.工具多 & 杂

2.学习成本高

3.团队协作难

4.维护成本高

 

2. 核心目标

解决问题首先要确定目标,结合背景,Httprunner 的核心目标就是业务导向,快速落地。

1.少投入

  • 工具开发&维护
  • 学习使用成本  
  • 编写&录入测试用例
  • 测试用例管理

2.高收益

  • 实现自动化回归
  • 性能脚本复用  
  • 兼具持续集成、线上监控
  • 辅助手工测试,自定义生成特定业务数据

设计思路

有了目标,作者是如何一步一步设计出来的呢?

  • 要想快速实现从 0 到 1,就是充分复用好的开源工具,比如requestspytestpydanticallurelocust
  • 要想避免闭门造车,拥抱开源生态是最好的选择;
  • 要想兼具自动化,性能,持续集成,线上监控,需要实现命令行CLI调用和引入并发机制;
  • 要想保证工具质量,需要运用测试驱动开发的思想,以及分享出去,收到同行反馈;
  • 要想实现协作管理,需要用简单清晰的形式让大家真正用起来,约定大于配置

主要特征

  • 继承的所有强大功能requests,只需以人为方式处理HTTP(S),就很有趣。
  • 以YAML或JSON格式定义测试用例,pytest以简洁优雅的方式运行。
  • HAR支持下记录并生成测试用例。
  • 支持variables/ extract/ validate/hooks机制,以创建非常复杂的测试方案。
  • 使用debugtalk.py插件,任何功能都可以在测试用例的任何部分使用。
  • 使用jmespath,提取和验证json响应从未如此简单。
  • 有了pytest,数百个插件随时可用。
  • 使用allure,测试报告可以非常强大。
  • 通过重复使用locust,您可以进行性能测试,而无需进行额外的工作。
  • 支持CLI命令,与完美结合CI/CD

说完主要特征,我想提几个 Httprunner 借鉴优秀开源项目的地方:

  • debugtalk.py 借鉴 pytest 的 conftest.py
  • 参数化机制借鉴 Loadrunner
  • 环境变量管理(.env)借鉴 Postman
  • 测试用例分层管理借鉴 Katalon

大家有兴趣的可以去搜索看看。

 

3.如何用

最后让我们实际操作看看,我这里的演示基于 HttpRunner v3.x。

3.1 安装

HttpRunner在上可用PyPI,可以通过安装pip

$ pip3 install httprunner

如果之前已经安装过并且想要升级到最新版本,则可以使用该-U选项。

$ pip3 install -U httprunner
$ pip3 install -U git+https://github.com/httprunner/aaa@qq.com

安装HttpRunner后,系统将添加 5 个命令。

  • httprunner:主命令,用于所有功能
  • hrun:的别名httprunner run,用于运行YAML / JSON / pytest测试用例
  • hmake:的别名httprunner make,用于将YAML / JSON测试用例转换为pytest文件
  • har2case:的别名httprunner har2case,用于将HAR转换为YAML / JSON测试用例
  • locusts:用于对 locusts 进行负载测试

要查看HttpRunner版本:

$ httprunner -V  # hrun -V

 

3.2 脚手架创建项目

如果要创建新项目,则可以使用脚手架快速启动一个项目。

你需要指定的唯一参数是项目名称,比如下方的 demo

$ httprunner startproject demo

注意,不能使用已经存在的项目名称,否则会收到警告。

运行脚手架项目

支架项目有几个有效的测试用例,因此您无需任何编辑即可运行测试。

$ hrun demo

 

3.3 记录并生成测试用例

捕获 HTTP 请求和响应

在编写测试用例之前,我们应该了解 API 的详细信息。使用 Web 调试代理工具(如fiddler捕获 HTTP 流量)是一个不错的选择。

例如,下图显示抓取访问百度首页。

自动化框架 Httprunner 介绍

将会话导出到HAR文件

然后,我们可以选择捕获的请求和响应,并将会话导出到HTTP存档(.har)文件。

自动化框架 Httprunner 介绍

 

用 har2case 生成测试用例

当您获得HAR文件时,可以使用内置命令har2case将其转换为 HttpRunner 测试用例。

生成测试用例(pytest)

由于HttpRunner v3.x,har2case默认情况下会将HAR文件转换为 pytest,因此强烈建议以 pytest 格式而不是以前的YAML/JSON格式编写和维护测试用例。

$ har2case har/demo.har

生成测试用例(YAML / JSON)

当然,您也可以生成以前的YAML/JSON测试用例格式。只需在上添加-2y/--to-yml-2j/--to-json参数即可har2case

$ har2case har/demo.har -2j

 

3.4 编写测试用例

HttpRunner v3.x支持三种测试用例格式pytestYAMLJSON。强烈建议以pytest格式而不是以前的YAML/JSON格式编写和维护测试用例。

基于生成的pytest测试用例,您可以根据需要进行一些调整,因此您需要了解测试用例格式的详细信息。这块东西比较多,我想之后再展开讲一下,大家也可以去提前搜索相关信息。

 

自动化框架 Httprunner 介绍

 

 

3.5 运行测试用例

准备好测试用例后,可以使用hrun命令运行测试用例。

注意,hrun是的命令别名httprunner run,它们具有相同的作用。

hrun = httprunner run

以多种方式运行测试用例

HttpRunner 可以以多种方式运行测试用例。

您可以通过指定测试用例文件路径来运行单个测试用例。

$ hrun path/to/testcase1

您还可以通过指定多个测试用例文件路径来运行多个测试用例。

$ hrun path/to/testcase1 path/to/testcase2

如果要运行整个项目的测试用例,则可以通过指定项目文件夹路径来实现此目标。

$ hrun path/to/testcase_folder/

3.6 测试报告

受益于pytestHttpRunner v3.x的集成,HttpRunner v3.x可以使用所有pytest插件,包括测试报告插件(如pytest-html和)allure-pytest

内置的HTML报告

pytest-html插件随HttpRunner安装一起提供。当您想要生成HTML报告以执行测试用例时,可以添加命令参数--html

$ hrun /path/to/testcase --html=report.html

如果您想创建一个独立的报告,它是一个单个HTML文件,可以在共享结果时更加方便,则可以添加另一个命令参数--self-contained-html

$ hrun /path/to/testcase --html=report.html --self-contained-html

您可以参考以pytest-html获取更多详细信息。

Allure 报告

allure-pytest是HttpRunner的可选依赖项,因此,如果要生成吸引力报告,则应allure-pytest单独安装插件。

$ pip3 install "allure-pytest"

或者,您可以安装具有额外吸引力的HttpRunner软件包。

$ pip3 install "httprunner[allure]"

一旦allure-pytest准备好了,下面的参数可以使用hrun/pytest的命令。

  • --alluredir=DIR:在指定目录中生成魅力报告(可能不存在)
  • --clean-alluredir:清理alluredir文件夹(如果存在)
  • --allure-no-capture:不要将pytest捕获的日志记录/ stdout / stderr附加到报告中

要在测试完成后查看实际报告,您需要使用Allure命令行实用程序从结果生成报告。

$ allure serve /tmp/my_allure_results

此命令将在默认浏览器中显示生成的报告。

大家有生成自己的报告吗?

 

结语

Httprunner 不仅仅是一套新的自动化测试工具/框架,它是通用的自动化测试解决方案,并且融合最佳工程实践,意在打造接口自动化测试生态。

还是要说回我的初衷,不要过分依赖工具,工具只是辅助,重要的是我们测试的思路。你可以选中一款工具之后,结合业务去用用看,效果好的话就继续,不好就换个试试,能解决问题就好。希望大家看完这篇有收获,我们下次见!