pytest,在同一行使用多个命令

时间:2018-03-06 11:48:27

标签: python python-3.x python-decorators

我有这种类型的代码:

@pytest.mark.run(order=2)
@pytest.mark.parametrize('time_ms', range(100, 160, 20))
    def test_wifi_advertising_interval(time_ms):
    test_wifi_screen_edit()
    ....
    ....

现在,我想要的是在一个SINGLE行中生成所有命令(在我的情况下是其中两个),

像这样:

@pytestCodeWithSingleLine(pytest.mark.parametrize('time_ms', range(100, 160, 20),pytest.mark.run(order=2)))

有可能吗? 感谢

1 个答案:

答案 0 :(得分:0)

你可以编写一个很容易组合装饰器的函数:

def combine(*decorators):
    def combined_decorator(func):
        for deco in decorators:
            func = deco(func)
        return func
    return combined_decorator

这不是pytest特定的,它应该适用于在单独的行上编写时一起工作的装饰器的任何组合。

虽然这并不难,但这并不一定意味着这样做是个好主意。我认为您的代码的两行版本比一个长行上的组合版本更容易理解,因此我建议保留未组合版本。