Не удается получить pytest для понимания аргументов командной строки в настройках
Поэтому я пытался заставить pytest запускать тесты селена в разных средах на основе некоторого аргумента командной строки. Но он продолжает выдавать эту ошибку:
TypeError: setup_class() takes exactly 2 arguments (1 given)
Кажется, это понимание того, что setup_class
принимает 2 аргумента, но host
не передается. Вот код для setup_class
:
def setup_class(cls, host):
cls.host = host
А вот и файл conftest.py:
def pytest_addoption(parser):
parser.addoption("--host", action="store", default='local',
help="specify the host to run tests with. local|stage")
@pytest.fixture(scope='class')
def host(request):
return request.config.option.host
Что странно в том, что host
это видно по функциям (поэтому, если я сделаю функцию test_function и передам хост в качестве параметра, он получит его просто отлично), это просто setup
светильники, которые не работают.
Я оглянулся и нашел это, pytest - используйте funcargs внутри setup_module, но это, похоже, не работает (и оно устарело с 2.3.
Кто-нибудь знает, что я делаю не так? Использование py.test 2.3.2.
Спасибо
2 ответа
setup_module/class/method и друзья не могут работать с приборами pytest напрямую. Способ Pytest-2.3 сделать эквивалентный - использовать автоматические приборы. Если вы можете, лучше передать приборы для тестирования функций или поставить маркер usefixtures на класс или модуль.
Чтобы получить доступ к параметрам командной строки из функций настройки, вы можете использовать объект pytest.config. Вот пример... адаптироваться по мере необходимости.
import pytest
def setup_module(mod):
print "Host is %s" % pytest.config.getoption('host')