当前位置: 首页 > news >正文

软件测试--如何使用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安装教程

  1. 首先要先安装python,配置好环境变量

  2. 用以下指令查看python版本

    python --version
    
  3. 使用以下指令安装har2case

    pip install har2case
    
  4. 安装完成后使用以下指令确认安装是否成功

    har2case -V
    
  5. 执行上述指令后,若碰到以下错误,则需要根据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'
    
    1. python版本若在3.9或更早,执行以下指令安装 distutils 模块

      python -m ensurepip
      python -m pip install --upgrade pip setuptools wheel
      
    2. python版本在3.10之后,distutils 模块被移除,建议安装 建议安装 setuptoolswheel

      python -m pip install --upgrade setuptools wheel
      
  6. 重新安装har2case

    pip uninstall har2case
    pip install har2case
    
  7. 验证安装,返回版本号

    har2case -V
    

什么是httprunner

HttpRunner 是一个基于 Python 的开源通用测试框架,支持 HTTP/HTTPS 协议接口的自动化测试。其核心特点包括:

  1. 使用 YAML 或 JSON 脚本描述测试场景:测试人员可以通过编写简单的脚本定义接口类型、参数和返回值等信息,从而提高测试用例的可维护性。
  2. 支持多种测试类型:包括接口测试、性能测试、线上监控和持续集成等。
  3. 丰富的校验机制:支持多种校验方式,如断言、动态计算逻辑等。
  4. 与主流工具集成:支持与 Locust、Jenkins 等工具结合使用,方便持续集成和性能测试。

安装httprunner

  1. 使用以下指令安装

    pip install httprunner
    pip install httprunner==4.3.5
    
  2. 验证安装是否成功

    hrun -V
    

什么是Allure

  • 它是一个生成HTML测试报告的工具包,功能强大 , 可以生成美观、直观的测试报告。

Allure使用的前置条件

需要安装以下软件,配置好相关的环境变量:

软件描述
javaallure使用java开发,所以必须要有运行环境
python编写自动化所需语言
pycharm开发工具
pytestpython第三方包,使用它来搜集测试用例(安装指令pip install pytest)

安装Allure

  • Central Repository

  • 直接下载zip包,解压即可

  • 配置Allure环境变量

    在这里插入图片描述

  • 验证安装是否成功

    在这里插入图片描述

如何使用har2case和HttpRunner + Allure生成测试报告

  1. 使用浏览器(如 Chrome)或其他抓包工具(如 Fiddler 或 Charles)捕获网络请求并生成 HAR 文件。在 Chrome 中,可以通过按 F12 打开开发者工具,切换到 Network 标签页,选择需要的请求后右键点击并选择“Save as HAR with content”来保存

    在这里插入图片描述

  2. 此处以这个login接口为例,保存这个接口的har文件,命名为login.har。

    在这里插入图片描述

  3. 转换HAR文件

    将 HAR 文件转换为测试用例文件:

    • 转换为 YAML 格式:

      har2case -2y login.har
      

      在这里插入图片描述

    • 转换为 JSON 格式:

      har2case -2j login.har
      
  4. 生成后的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
    
    
  5. 修改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"
    
    
  6. 用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测试结果报告

  1. 执行以下指令,生成 Allure 报告

    hrun login.yml --alluredir allure-results
    

    在这里插入图片描述

  2. 可以看到生成了目录

    在这里插入图片描述

  3. 执行以下指令,运行后,会自动打开浏览器并显示 Allure 报告。

    allure serve allure-results
    

    在这里插入图片描述

    在这里插入图片描述

相关文章:

  • 网络爬虫【爬虫库urllib】
  • 车载通信架构 --- UB位更新策略记录
  • 【Python学习笔记】一些关于多线程,xls文件读取,PyQt5,PyInstaller打包等问题的解决方案记录
  • <link>标签在网页中的常见用途及与<script>标签引入资源方式的区别
  • Inno Setup打包脚本区分Windows系统版本
  • Proser:重大更新,新增数据检视功能
  • 使用 Arduino 和 Wi-Fi 的 Web 控制伺服
  • ceph运维硬件规划技巧
  • HashMap的理解和原理
  • eclipse运行配置,希望带参数该怎么配置
  • PWM变流器的LCL滤波器设计及其有源阻尼策略
  • 文生图网站推荐(2025.3)
  • leetcode501-二叉搜索树中的众数
  • 烽火HG680-KA_海思HI3798MV310_安卓9.0_U盘强刷固件包及注意点说明
  • 整除分块 (+例题变形K-取模 2022年天梯赛(GPLT)上海理工大学校内选拔赛)
  • 最长公共子序列(动态规划法+优化)
  • NL2SQL 优化之 Schema 编写标准
  • 单词翻转(信息学奥赛一本通-1144)
  • AI视觉测试工具实战评测:以Applitools为例的技术解析与行业应用
  • CoreData 调试警告:多个 NSEntityDescriptions 声明冲突的解决
  • 俄外长与美国务卿通电话,讨论俄美接触等问题
  • 特朗普政府涉税改法案遭众议院预算委员会否决
  • 福州一宋代古墓被指沦为露天厕所,仓山区博物馆:已设置围挡
  • 清雪车司机未拉手刹下车导致溜车被撞亡,事故调查报告发布
  • 泽连斯基已离开土耳其安卡拉
  • 国税总局上海市税务局通报:收到王某对刘某某及相关企业涉税问题举报,正依法依规办理