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

Allure 集成 pytest

Allure 是一个强大的测试报告工具,与 pytest 集成可以生成详细的测试报告,包括测试步骤、测试数据、截图、错误堆栈等。


1. 安装 Allure 和相关依赖

  1. 安装 pytest-allure-adaptor 插件:

    pip install allure-pytest
    
  2. 确保本地已安装 Allure 工具。如果未安装,可通过以下方式安装:

    • MacOS:
      brew install allure
      
    • Windows/Linux: 下载 Allure 的 官方版本,解压后配置到环境变量中。
  3. 验证安装是否成功:

    allure --version
    

2. pytest 与 Allure 的集成

 1)生成 Allure 报告

确保已经运行了 pytest 测试,并生成了 Allure 数据文件。例如:

pytest --alluredir=./allure-results

这里的 allure-results 目录是 Allure 生成的原始数据文件存储路径。


2) 使用 Allure 命令生成 HTML 报告

运行以下命令,将 allure-results 转换为 HTML 报告:

allure generate ./allure-results -o ./allure-report --clean

  -o ./allure-report 指定生成的 HTML 报告输出目录。

     --clean 会在生成新报告前清除旧的报告内容。

3) 打开生成的 Allure 报告

 

  • 方式 1:通过 Allure 命令直接打开

    运行以下命令,Allure 会启动一个本地服务来展示报告:

    allure open ./allure-report
    

    执行后,浏览器会自动打开 Allure 报告。

    方式 2:手动打开 index.html

  • 进入生成的 Allure 报告目录:

  • cd ./allure-report
    
  • 找到 index.html 文件,用浏览器直接打开:
    • Windows: 双击 index.html 文件。
    • Linux/Mac: 使用浏览器打开,例如:
      firefox index.html
      # 或
      google-chrome index.html
  • Allure 服务启动方式推荐:
    使用 allure open 命令启动本地服务查看报告。这种方式可以动态加载资源,避免直接打开 index.html 时某些功能(如图表、附件)因浏览器安全策略而失效。

  • 防止报错:
    如果直接打开 index.html 时出现资源加载失败的问题(如无法显示图表),建议使用以下命令启动本地 HTTP 服务:

    python -m http.server 8080
    

    然后在浏览器访问:
    http://localhost:8080/allure-report/index.html

 


3. Allure 的常用装饰器

Allure 提供了一系列装饰器,用于标记测试用例的元数据、步骤和测试附加信息。

3.1 测试标题和描述
  • @allure.title
    自定义测试用例标题。

    import allure
    
    @allure.title("测试用户登录功能")
    def test_login():
        assert login("user", "password") == "success"
    
  • @allure.description
    添加测试用例的详细描述。

    @allure.description("验证用户登录接口是否返回正确的结果")
    def test_login():
        assert login("user", "password") == "success"
    
3.2 测试分类
  • @allure.severity
    标记测试用例的优先级(blocker, critical, normal, minor, trivial)。

    @allure.severity(allure.severity_level.CRITICAL)
    def test_payment():
        assert process_payment() is True
    
  • @allure.feature
    按功能模块对测试用例进行分组。

    @allure.feature("登录模块")
    def test_login():
        assert login("user", "password") == "success"
    
  • @allure.story
    标记功能模块中的子功能。

    @allure.feature("登录模块")
    @allure.story("用户使用正确的凭据登录")
    def test_login():
        assert login("user", "password") == "success"
    
3.3 测试步骤
  • @allure.step
    添加测试步骤,便于报告中展示测试用例执行的流程。
    @allure.step("输入用户名和密码")
    def enter_credentials(username, password):
        pass
    
    @allure.step("点击登录按钮")
    def click_login():
        pass
    
    def test_login():
        enter_credentials("user", "password")
        click_login()
        assert True
    
3.4 附件
  • @allure.attach
    添加测试附件,可以是文本、HTML、图片等。

    @allure.attach("这是一个文本附件", name="文本信息", attachment_type=allure.attachment_type.TEXT)
    def test_attach_text():
        assert True
    
    @allure.attach("<h1>这是一个HTML附件</h1>", name="HTML信息", attachment_type=allure.attachment_type.HTML)
    def test_attach_html():
        assert True
    
  • 附加图片或日志:

    @allure.attach.file("screenshot.png", name="截图", attachment_type=allure.attachment_type.PNG)
    def test_attach_image():
        assert True
    

4. 结合案例:完整示例

import allure

@allure.feature("支付模块")
@allure.story("支付功能验证")
@allure.severity(allure.severity_level.BLOCKER)
@allure.title("验证用户支付成功")
def test_payment():
    with allure.step("初始化支付数据"):
        payment_data = {"amount": 100, "currency": "USD"}
        allure.attach(str(payment_data), name="支付数据", attachment_type=allure.attachment_type.JSON)
    
    with allure.step("执行支付请求"):
        response = process_payment(payment_data)  # 假设这个是支付函数
        allure.attach(str(response), name="支付响应", attachment_type=allure.attachment_type.TEXT)

    with allure.step("校验支付结果"):
        assert response["status"] == "success", "支付失败"

def process_payment(data):
    # 模拟支付接口响应
    return {"status": "success", "transaction_id": "12345"}

5. Allure 的核心功能

  1. 多层次分组:

    • 使用 @allure.feature@allure.story 组织测试报告的层级。
  2. 测试用例管理:

    • 自定义标题、描述、标签(如优先级、用例类型)。
  3. 步骤可视化:

    • 通过 @allure.step 展示用例执行的具体过程。
  4. 附件支持:

    • 附加截图、日志、JSON 响应等信息。
  5. 失败快照:

    • 自动捕获失败的堆栈信息。

6. 总结

通过集成 Allure 和 pytest,可以实现清晰直观的测试报告展示。合理利用装饰器和附件功能,能够极大提升测试报告的可读性与信息量,使开发和测试团队更高效地协作与问题定位。


http://www.kler.cn/a/472235.html

相关文章:

  • 晨辉面试抽签和评分管理系统之一:考生信息管理和编排
  • jenkins 使用 ssh-agent向windows进行部署
  • IDEA 字符串拼接符号“+”位于下一行的前面,而不是当前行的末尾
  • PCL 点云多边形面积计算
  • poi-tl+kkviewfile实现生成pdf业务报告
  • sunrays-framework(太阳射线框架搭建)
  • 学习echarts折线图tooltip属性中formatter文字设置不同颜色的方法
  • 新型企业电站 源网荷储充一体化管理系统 EMS3.0具备哪些功能?
  • 太速科技-754-基于Agilex™ 7 FPGA F 系列的PCIe4.0X16 加速卡
  • 全新免押租赁系统打造便捷安全的租赁体验
  • Web3 游戏 2024:牛市下的缺席者?
  • 利用Spark实现WordCount(Scala语言)
  • 【C】文件操作
  • CUDA编程【7】 线程束
  • 青少年编程与数学 02-006 前端开发框架VUE 10课题、侦听器
  • STM32-笔记35-DMA(直接存储器访问)
  • Approaching a Chatbot Service - Part 3: Bot Model
  • flask后端开发(13):登录功能后端实现和钩子函数
  • 扩散模型论文概述(三):Stability AI系列工作【学习笔记】
  • 基于RK3568/RK3588大车360度环视影像主动安全行车辅助系统解决方案,支持ADAS/DMS
  • 关于常见的负载均衡方法都有什么?
  • labelme转yolo格式
  • 计算机网络 (23)IP层转发分组的过程
  • R语言的循环实现
  • 前端开发 vue 中如何实现 u-form 多个form表单同时校验
  • Estimator (Statistic for Machine Learning)