如何基于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
相关产品推荐
相关产品推荐

