如何在pytest中仅运行一次参数测试

时间:2019-09-05 15:11:36

标签: python pytest parametrized-testing

我只需要在pytest中运行一次参数化测试, 例如,我有一个包含测试数据的动态列表,并希望使用test_data [0]参数运行测试,以防用户为此发送某些条件,例如mark

test_data = list()
test_data = create_test_data() #dynamic list depends on user conditions

@pytest.mark.parametrize("params", test_data)
def test_b(params):
    ...

1 个答案:

答案 0 :(得分:0)

最好将您的测试重构为配置文件并进行测试。那么最简单的方法就是在不同的文件夹中定义几个配置文件,并使用不同数量的数据。

或者,您传递一个参数并对其进行解析,如下所示

测试:

def test_b(params):
    ...

conftest.py的内容:

data = [....]


def pytest_addoption(parser):
    parser.addoption("--one", action="store_true", help="run one test")


def pytest_generate_tests(metafunc):
    if "params" in metafunc.fixturenames:
        if metafunc.config.getoption("one"):

            metafunc.parametrize("params", data[:1])
        else:
            metafunc.parametrize("params", data) 

另请参阅 How to pass arguments in pytest by command line