pytest中有什么方法可以知道从命令行中选择了哪些标记?
我有些标记为“慢”的测试需要重处理。我只想在标记缓慢激活后才能进行处理。
heavy_var = None
def setup_module(module):
global heavy_var
# Need help here!?
if markers["slow"]:
heavy_var = treatment()
def test_simple():
pass
@pytest.mark.slow():
def test_slow():
assert heavy_var.x == "..."
我怎么知道是否选择了慢速标记?当我调用pytest时-m not slow
markers["slow"]
将为False,否则为True。
如果仅slow
在选择标记为的测试时才需要运行某些代码,则可以通过在替换了的模块范围内的夹具中过滤测试项来执行此操作setup_module
。例:
@pytest.fixture(scope='module', autouse=True)
def init_heavy_var(request):
for item in request.session.items:
if item.get_closest_marker('slow') is not None:
# found a test marked with the 'slow' marker, invoke heavy lifting
heavy_var = treatment()
break
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句