软件测试--如何使用har2case和HttpRunner + Allure生成测试报告
文章目录
- 什么是har2case
- Har2Case安装教程
- 什么是httprunner
- 安装httprunner
- 什么是Allure
- Allure使用的前置条件
- 安装Allure
- 如何使用har2case和HttpRunner + Allure生成测试报告
- 通过Allure查看Httprunner测试结果报告
什么是har2case
har2case
是一个开源工具,用于将 HTTP Archive(HAR)文件转换为 YAML 或 JSON 格式的测试用例文件。它主要用于自动化测试领域,特别是与 HTTPRunner 测试框架结合使用时,可以快速生成高质量的测试用例,提高 API 测试的效率和准确性。该工具基于 Python 开发,支持多种参数配置,如文件路径、日志级别和输出格式,适用于 API 自动化测试、性能测试、回归测试和跨平台测试等多种场景。
Har2Case安装教程
-
首先要先安装python,配置好环境变量
-
用以下指令查看python版本
python --version
-
使用以下指令安装har2case
pip install har2case
-
安装完成后使用以下指令确认安装是否成功
har2case -V
-
执行上述指令后,若碰到以下错误,则需要根据python版本安装对应模块。
Traceback (most recent call last): File "<frozen runpy>", line 198, in _run_module_as_main File "<frozen runpy>", line 88, in _run_code File "E:\Python\Scripts\har2case.exe\__main__.py", line 4, in <module> File "E:\Python\Lib\site-packages\har2case\cli.py", line 14, in <module> from distutils.version import StrictVersion ModuleNotFoundError: No module named 'distutils'
-
python版本若在3.9或更早,执行以下指令安装 distutils 模块
python -m ensurepip python -m pip install --upgrade pip setuptools wheel
-
python版本在3.10之后,distutils 模块被移除,建议安装 建议安装
setuptools
和wheel
python -m pip install --upgrade setuptools wheel
-
-
重新安装har2case
pip uninstall har2case pip install har2case
-
验证安装,返回版本号
har2case -V
什么是httprunner
HttpRunner 是一个基于 Python 的开源通用测试框架,支持 HTTP/HTTPS 协议接口的自动化测试。其核心特点包括:
- 使用 YAML 或 JSON 脚本描述测试场景:测试人员可以通过编写简单的脚本定义接口类型、参数和返回值等信息,从而提高测试用例的可维护性。
- 支持多种测试类型:包括接口测试、性能测试、线上监控和持续集成等。
- 丰富的校验机制:支持多种校验方式,如断言、动态计算逻辑等。
- 与主流工具集成:支持与 Locust、Jenkins 等工具结合使用,方便持续集成和性能测试。
安装httprunner
-
使用以下指令安装
pip install httprunner pip install httprunner==4.3.5
-
验证安装是否成功
hrun -V
什么是Allure
- 它是一个生成HTML测试报告的工具包,功能强大 , 可以生成美观、直观的测试报告。
Allure使用的前置条件
需要安装以下软件,配置好相关的环境变量:
软件 | 描述 |
---|---|
java | allure使用java开发,所以必须要有运行环境 |
python | 编写自动化所需语言 |
pycharm | 开发工具 |
pytest | python第三方包,使用它来搜集测试用例(安装指令pip install pytest) |
安装Allure
-
Central Repository
-
直接下载zip包,解压即可
-
配置Allure环境变量
-
验证安装是否成功
如何使用har2case和HttpRunner + Allure生成测试报告
-
使用浏览器(如 Chrome)或其他抓包工具(如 Fiddler 或 Charles)捕获网络请求并生成 HAR 文件。在 Chrome 中,可以通过按 F12 打开开发者工具,切换到 Network 标签页,选择需要的请求后右键点击并选择“Save as HAR with content”来保存
-
此处以这个login接口为例,保存这个接口的har文件,命名为login.har。
-
转换HAR文件
将 HAR 文件转换为测试用例文件:
-
转换为 YAML 格式:
har2case -2y login.har
-
转换为 JSON 格式:
har2case -2j login.har
-
-
生成后的yml文件如下
config: name: login test variables: {} teststeps: - name: /user/login request: headers: Content-Type: application/json User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 json: password: '123' username: zmx method: POST url: http://192.168.179.1:9999/user/login validate: - eq: - status_code - 500 - eq: - headers.Content-Type - application/json - name: /user/login request: headers: Content-Type: application/json User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 json: password: '123' username: zmx method: POST url: http://192.168.179.1:9999/user/login validate: - eq: - status_code - 200 - eq: - headers.Content-Type - application/json - name: /user/login request: headers: Content-Type: application/json User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 json: password: '123' username: zmx method: POST url: http://192.168.179.1:9999/user/login validate: - eq: - status_code - 200 - eq: - headers.Content-Type - application/json
-
修改yml文件,设置想要的用例参数,如下:
- 用例一:username:zmx,password:123,返回体的status值:200
- 用例一:username:zmx,password:1234,返回体的status值:400
config: name: login test variables: username: "" password: "" code: "" parameters: username-password-code: - [ "zmx", "123", 200 ] - [ "zmx", "1234", 400 ] teststeps: - name: /user/login request: headers: Content-Type: application/json User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 json: password: "$password" username: "$username" method: POST url: http://192.168.179.1:9999/user/login log: # 打印变量值 - "username: $username" - "password: $password" - "code: $code" validate: - eq: - status_code - 200 - eq: - headers.Content-Type - application/json - eq: - body.status - "$code"
-
用httprunner执行这个yml文件,会看到测试用例结果,并生成对应测试用例的py文件。
hrun login.yml
在目录下生成的py文件代码内容:
# NOTE: Generated By HttpRunner v4.3.5
# FROM: login.yml
import pytest
from httprunner import HttpRunner, Config, Step, RunRequest
from httprunner import Parameters
class TestCaseLogin(HttpRunner):
@pytest.mark.parametrize(
"param",
Parameters(
{"username-password-code": [["zmx", "123", 200], ["zmx", "1234", 400]]}
),
)
def test_start(self, param):
super().test_start(param)
config = Config("login test").variables(
**{"username": "", "password": "", "code": ""}
)
teststeps = [
Step(
RunRequest("/user/login")
.post("http://192.168.179.1:9999/user/login")
.with_headers(
**{
"Content-Type": "application/json",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36",
}
)
.with_json({"password": "$password", "username": "$username"})
.validate()
.assert_equal("status_code", 200)
.assert_equal('headers."Content-Type"', "application/json")
.assert_equal("body.status", "$code")
),
]
if __name__ == "__main__":
TestCaseLogin().test_start()
7.运行这个py文件,也可以看到测试结果,这样就利用httpRunner完成了简单的自动化测试。
通过Allure查看Httprunner测试结果报告
-
执行以下指令,生成 Allure 报告
hrun login.yml --alluredir allure-results
-
可以看到生成了目录
-
执行以下指令,运行后,会自动打开浏览器并显示 Allure 报告。
allure serve allure-results