You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于allure-pytest自定义测试用例的严重级别?

如何基于allure-pytest自定义测试用例的严重级别?

嘿,我之前也碰到过类似的问题!在你用的allure-pytest 2.13.2版本里,Allure对Severity的处理确实比较严格——默认的Severity枚举是硬编码的,直接用@allure.label('severity', 'high')设置的话,框架会因为识别不到这个值而自动 fallback 到默认的normal,而且这个版本确实存在标签显示异常的小bug。

下面给你几个可行的解决办法,你可以根据自己的情况选:


方法一:直接使用字符串参数调用allure.severity装饰器

其实allure.severity装饰器不仅接受默认的Severity枚举值,也支持直接传入字符串。你可以试试这样写:

import allure

@allure.severity('high')
def test_my_high_severity_case():
    assert True

@allure.severity('low')
def test_my_low_severity_case():
    assert True

这样设置后,Allure应该能正确识别自定义的严重级别,不会再显示默认的normal了。


方法二:自定义Severity枚举类(更规范的方式)

如果你想让代码更规范,避免字符串拼写错误,可以自己定义一个包含自定义级别的枚举类,然后直接使用:

import allure
from enum import Enum

class CustomSeverity(str, Enum):
    BLOCKER = 'blocker'
    CRITICAL = 'critical'
    HIGH = 'high'
    NORMAL = 'normal'
    LOW = 'low'
    MINOR = 'minor'
    TRIVIAL = 'trivial'

@allure.severity(CustomSeverity.HIGH)
def test_high_severity():
    assert 1 == 1

这种方式和使用默认枚举的体验一致,还能利用IDE的自动补全功能,减少出错概率。


方法三:动态设置严重级别(适合测试用例内部逻辑判断的场景)

如果你的严重级别需要根据测试用例内部的逻辑动态调整,可以用allure.dynamic.severity来设置:

import allure

def test_dynamic_severity():
    # 这里可以加你的判断逻辑
    if some_condition:
        allure.dynamic.severity('high')
    else:
        allure.dynamic.severity('low')
    assert True

关于标签不显示的问题

你提到的标签不显示确实是2.13.2版本的已知问题,如果上面的方法解决了严重级别的问题但标签还是不显示,建议你尝试升级到allure-pytest和allure-python-commons的最新稳定版本,新版本修复了不少类似的UI和逻辑bug。

备注:内容来源于stack exchange,提问作者Sergey Popov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 15:49:31