Allure使用详解

Allure 是一款强大的测试报告生成框架,能够帮助开发者更直观地分析测试结果和排查问题。以下是使用 Allure 排查问题的详细步骤和方法:

1. 生成详细的测试步骤(Steps)

在测试代码中通过 @Step 注解或 step() 方法标记关键步骤,生成可读性高的执行流程。

示例(Python + pytest-allure):

import allure

@allure.step("登录系统")
def login(username, password):
    # 模拟登录操作
    pass

def test_example():
    login("admin", "123456")
    with allure.step("验证登录结果"):
        assert user_is_logged_in()

报告中将展示每个步骤的执行状态,快速定位失败点。

2. 附加调试信息(Attachments)

在测试失败时,通过附件添加日志、截图、HTML 片段等上下文信息。

示例(附加截图):

def test_failure():
    try:
        # 模拟失败操作
        assert False
    except AssertionError:
        allure.attach(driver.get_screenshot_as_png(), name="失败截图", attachment_type=allure.attachment_type.PNG)
        raise

在报告中可直接查看附加的调试文件。

3. 环境信息记录

在 allure-results 目录中添加 environment.properties 文件,记录测试环境信息(如浏览器版本、操作系统等),帮助复现问题。

文件内容示例:

Browser=Chrome 120
OS=Windows 11
Python=3.11

4. 分析失败用例

  • 查看失败堆栈:Allure 报告中会直接展示断言失败的代码位置和错误堆栈。
  • 对比历史数据:通过趋势图(Trends)查看失败用例是否为新问题或历史问题复发。
  • 分类标签(Categories):自定义错误分类(如 AssertionError、TimeoutError),快速过滤同类问题。

5. 使用历史趋势(History)

配置 Allure 保存历史报告,通过趋势图分析失败率变化,定位引入问题的版本或代码变更。

生成历史对比命令:

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

6. 与 CI/CD 集成

将 Allure 报告集成到 Jenkins、GitLab CI 等工具中,实现自动化问题跟踪。

Jenkins 配置示例:

  1. 安装 Allure Jenkins Plugin。
  2. 在构建后步骤中添加 Allure Report,指定报告路径。

7. 重试机制分析

结合测试框架的重试功能(如 pytest-rerunfailures),通过 Allure 展示重试结果,区分偶发性和稳定性问题。

示例(pytest 配置重试):

pytest --reruns 3 --alluredir=./allure-results

报告中会标记重试成功的用例。

8. 自定义分类和标签

通过 @Feature@Story@Severity 等注解标记测试用例,按功能模块或优先级过滤问题。

示例:

@allure.feature("用户管理")
@allure.story("登录功能")
@allure.severity(allure.severity_level.CRITICAL)
def test_login():
    pass

总结

通过 Allure 的步骤记录、附件调试、环境信息、历史对比、分类标签等功能,可以快速定位:

  • 断言失败的具体位置
  • 偶发性问题的上下文信息(如截图、日志)
  • 环境或版本导致的问题
  • 高频失败模块的优先级分配

常用命令:

# 生成报告
allure generate ./allure-results -o ./report --clean

# 本地查看报告
allure serve ./allure-results

合理利用 Allure 的丰富报告功能,可以大幅提升测试问题排查效率!

进阶高级测试工程师 文章被收录于专栏

《高级软件测试工程师》专栏旨在为测试领域的从业者提供深入的知识和实践指导,帮助大家从基础的测试技能迈向高级测试专家的行列。 在本专栏中,主要涵盖的内容: 1. 如何设计和实施高效的测试策略; 2. 掌握自动化测试、性能测试和安全测试的核心技术; 3. 深入理解测试驱动开发(TDD)和行为驱动开发(BDD)的实践方法; 4. 测试团队的管理和协作能力。 ——For.Heart

全部评论

相关推荐

03-15 00:45
已编辑
中国科学院大学 Java
问的很简单都秒了,但是面试官没开摄像头,疑似kpi,无后续。--------------------3/14更新,3/12通知给了口头offer,3/13发了意向书,已拒。一面(35min)(25/3/6)(无后续)    1、自我介绍    2、介绍一下你的那个Python相关项目(本科毕设,web系统+算法模型提供部分接口)    3、Java面向对象有哪些特点呢?详细说一下。    4、介绍一下hashmap;为什么要把链表转换为红黑树呢?红黑树查找的时间复杂度?1.7和1.8的区别。    5、介绍一下concurrentHashmap。    6、synchronized锁和Lock锁有什么区别?    7、公平锁的一个底层是怎么实现的呢?    8、线程池的核心参数、拒绝策略、提交一个任务执行流程?    9、spring有哪些特点?(ioc/aop)    10、spring中对于循环依赖是怎么解决的?    11、MySQL和redis的区别?    12、MySQL的索引结构是什么?    13、MySQL的事务有哪些特性?怎么保证?    14、MySQL的默认隔离级别?可重复读是怎么做到的呢?    15、介绍一下MVCC和快照读readview。    16、一般在什么场景下会使用redis?    17、对于大量的请求,如果此时缓存中还没有写入数据怎么办?    18、介绍一下redis实现的分布式锁。    19、有用过es和mongo DB吗?(知道,没用过)    20、消息中间件用过吗?说一下你的使用场景?    21、一个场景,如果说有一个接口响应的比较慢,如果说让你排查,你会怎么去排查?(上下游接口、大key问题,只答了两,后面试官补充)    无手撕,反问业务。
胖墩墩的查理在学c语言:哥们我是五号面的 流程差不多
查看21道真题和解析
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客企业服务