启动pytest测试运行程序时,如何指定用于设置pytest固定装置的配置?

时间:2019-10-14 19:20:55

标签: python pytest fixtures

我的测试依赖于特定环境(例如dev,qa,生产环境)的ID

在测试中,我使用固定装置在整个会话中提供一组ID。

@pytest.fixture(scope="session", autouse=True)
def test_entities(request):
    test_entities = None
    path = os.path.join(base_path, "data/test_entities_dev.json")        ...
    ... 
    <Get from File>
    ...
    return test_entities

我为给定测试检索的测试实体将取决于环境。我想指定启动pytest会话时要打开的文件。例如“ data / test_entities_qa.json”而不是“ data / test_entities_dev.json”。我该如何使用pytest?

2 个答案:

答案 0 :(得分:1)

如果我理解正确,则可以在每种环境中提供不同的命令行参数。在这种情况下,您应该签出Okken's answer

答案 1 :(得分:0)

我从this SO post借来的完整解决方案:

1)在conftest.py中,使用pytest钩子

# conftest.py
def pytest_addoption(parser):
    parser.addoption("--env", action="store", default="dev")

2)在Fixtures.py中使用以下模式:

@pytest.fixture(scope="session", autouse=True) 
def get_env(pytestconfig):
    return pytestconfig.getoption("env")

@pytest.fixture(scope="session", autouse=True)
def test_entities(request, get_env):
    filename = "data/dev_entities.json"
    if get_env == 'qa':
        filename = "data/qa_entities.json"
    elif get_env == 'prod':
         filename = "data/prod_entities.json"
    ...
    <Get entities from file>
    ...
    return entities