pytest-如何知道选择了哪些标记

纳齐姆·莱克哈尔(Nazime Lakehal)

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章