Как я могу указать конфигурацию для настройки приборов Pytest при запуске программы запуска Pytest Test Runner? - PullRequest
0 голосов
/ 14 октября 2019

Мои тесты основаны на идентификаторах, специфичных для конкретной среды (например, dev, qa, production)

В своих тестах я использую приборы, чтобы сделать набор идентификаторов доступным в течение сеанса.

@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 ]

1 голос
/ 14 октября 2019

Если я вас правильно понимаю, вы можете указать в каждой среде свой параметр командной строки. В этом случае вам следует проверить ответ Оккена .

0 голосов
/ 15 октября 2019

Мое полное решение, заимствованное из этого SO сообщения :

1) В conftest.py используйте pytest hooks

# 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
...