我的测试依赖于特定环境(例如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?
答案 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