如图,我这边一个方法是一个接口,配备了一个yaml配置文件,用于存放用例数据,然后通过pytest.mark.parametrize,来将yaml中的用例数据进行参数化传入,其中用例的等级就存放在这个case_data中,现在需要通过level来制定执行策略,我通过allure.dynamic将用例等级动态写入到了报告中,也可以查看。但是动态加载写入的等级并不能通过–allure-severities = critical 来选择critical用例执行,而使用@allure.severity装饰器写入的等级则可以。但使用装饰器时,我这个level并不能传进去,@pytest.mark同理,找了很久没有找到实现方法,特来求助各位!
@allure.title
这个装饰器可以接收 参数,
@allure.severity
这个装饰器因为是接收的一些它自定义好的参数,所以不能接收自定义的传参,
写在方法里,动态的定义级别,因为初始化的时候不会发现这些动态的定义,也不会找到
可以试着自己写个插件,动态的解析参数是否有severity这个参数,然后解析出来 就可以了。
简单的实现方法,改写hook 函数pytest_collection_modifyitems
写个简单的例子,仅供参考:
def pytest_collection_modifyitems(session, config, items: list):
for item in items:
print(item.nodeid)
if 'normal' in item.nodeid:
item.add_marker(pytest.mark.normal)
if 'critical' in item.nodeid:
item.add_marker(pytest.mark.critical)
感谢老师,这样看来好像的确是原包的局限性了。我水平很一般,还没有动过源码的经验,我尝试理解、试一下吧!
请问你解决了吗,我也有相同的问题