Передайте аргументы командной строки в тестовые модули - PullRequest
0 голосов
/ 28 октября 2018

При запуске сценариев Python мы можем использовать sys.argv для получения аргументов командной строки и использовать его в любом месте нашего кода Python.

При запуске Pytest мы можем использовать pytest_addoption для добавления аргументов командной строки,но мне кажется, что мы можем использовать их только в тестах или в приборах, где мы можем получить доступ к опции через все, что предоставляет объект config.

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

Возможно ли как-то получить доступ к конфигурации pytest, не требуя какого-либо приспособления?

1 Ответ

0 голосов
/ 28 октября 2018

У вас есть несколько способов доступа к объекту конфигурации:

  1. Через request.config атрибут объекта объекта request
  2. Через pytestconfig Светильник
  3. Через pytest.config ( объект конфигурации становится атрибутом модуля при вызове pytest_configure hook - используйте с осторожностью на ранней фазе инициализации, но вы можете полностью положиться на него в тестах). Вероятно, это то, что вы ищете.
  4. Через node.config атрибут любого объекта, который подклассов _pytest.nodes.Node, например Session объекта, узлов тестового элемента и т. Д.

Пример использования:

# conftest.py
def pytest_addoption(parser):
    parser.addoption('--spam', action='store_true', default=False, help='some flag')
# test_spam.py

import pytest


print('accessing option on module level', pytest.config.getoption('--spam'))

def util():
    print('accessing option from non-test function', pytest.config.getoption('--spam'))


@pytest.fixture
def myfixture(request, pytestconfig):
    print('accessing option in fixture via request', request.config.getoption('--spam'))
    print('accessing option in fixture via session', request.session.config.getoption('--spam'))
    print('accessing option in fixture via pytestconfig', pytestconfig.getoption('--spam'))


def test_spam(request, pytestconfig):
    print('accessing option in fixture via request', request.config.getoption('--spam'))
    print('accessing option in fixture via session', request.session.config.getoption('--spam'))
    print('accessing option in fixture via pytestconfig', pytestconfig.getoption('--spam'))

и т.д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...