首页 > 解决方案 > 一次用多个标记标记 test_

问题描述

我需要用很多标记来标记测试,并且想避免 @pytest.mark.A @pytest.mark.B @pytest.mark.C @pytest.mark.D @pytest.mark.E 有没有办法用某种列表或数组来标记测试,也许会产生这种影响? my_markers = ["A", "B", "C", "D", "E"] @pytest.mark.*my_markers

标签: pythonpytest

解决方案


如果不出意外,一个简单的自定义装饰器可以处理这个问题。

def add_marks(*args):
    def _(f):
        for mark in args:
            f = getattr(pytest.mark, mark)(f)
            # f = pytest.Mark(mark)(f) ?
        return f
    return _

@add_marks("A", "B", "C", "D", "E")
def test_foo():
    ...

(写完之后,我看到这基本上是一个pytest.mark特定的作曲家 a là https://stackoverflow.com/a/45517876/1126841。)


推荐阅读