有没有选项可以运行参数化setup_function?

时间:2014-02-05 08:39:38

标签: python pytest

我做了一些测试,现在我遇到了问题。该测试是参数化的:

def pytest_generate_tests(metafunc):
    ...
    metafunc.parametrized("param", range(1,2,3)

def test_sometest(param):
    ...

现在我想编写一个setup_function函数,它将了解参数。类似的东西:

def setup_function(function, param):
    ...

那么有没有选择呢?

感谢

1 个答案:

答案 0 :(得分:0)

执行此操作的最佳方法是使用fixture而不是setup_function()

import pytest

pytest.fixture(params=[1, 2, 3])
def fix(request):
    if request.param == 1:
        return 1
    else:
        return -1

def test_sometest(fix):
    pass

这也比pytest_generate_tests方法更好,因为py.test可以确定在实际需要开始执行测试之前将执行哪些测试,这有助于选择要运行的测试(-k)等