Q:

Can't get pytest command line arguments prior to test execution?

I triy to skip particular tests dependent on the value of command-line arguments. I try to get arguments values with pytest.config.getoption("--some-custom-argument") like described in this related question suggestion in the test files and check the arguments values via skipif. But pyest has no  config. And getting argument values via request.config.getoption("--some-custom-argument") seems only work in fixture functions. Can I get command line arguments prior to test execution somehow different that I can check them in skipif on a file scope level?

A:

Since the tests are collected after the configuration stage and before the test collection (i.e. also before test execution), the pytest.config is available at the module levelin test modules. Example:
# conftest.py
def pytest_addoption(parser):
    parser.addoption('--spam', action='store')

# test_spam.py
import pytest

print(pytest.config.getoption('--spam'))

@pytest.mark.skipif(pytest.config.getoption('--spam') == 'eggs', 
                    reason='spam == eggs')
def test_spam():
    assert True

Running with --spam=eggs yields:
$ pytest -vs -rs --spam=eggs
============================== test session starts ================================
platform linux -- Python 3.6.5, pytest-3.4.1, py-1.5.3, pluggy-0.6.0 -- /data/gentoo64/usr/bin/python3.6
cachedir: .pytest_cache
rootdir: /data/gentoo64/home/u0_a82/projects/stackoverflow/so-50681407, inifile:
plugins: mock-1.6.3, cov-2.5.1, flaky-3.4.0
collecting 0 items                                                                                                     
eggs
collected 1 item

test_spam.py::test_spam SKIPPED
============================ short test summary info ==============================
SKIP [1] test_spam.py:7: spam == eggs

=========================== 1 skipped in 0.03 seconds =============================

