You have multiple ways of accessing the config object:
- Via
request.config
attribute of the request
fixture object
- Via
pytestconfig
fixture
- Via
pytest.config
(the config object becomes a module attribute in the pytest_configure
hook invocation - use with caution in early init phase, but you can fully rely on it in tests). This is presumably what you are looking for.
- Via
node.config
attribute of any object that subclasses _pytest.nodes.Node
, for example Session
object, test item nodes etc.
Example usage:
# 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'))
etc.