diff --git a/CHANGELOG b/CHANGELOG index fd8ce8e4a..cba430e14 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -65,6 +65,8 @@ - fix issue741: make running output from testdir.run copy/pasteable Thanks Bruno Oliveira. +- add a new ``--noconftest`` argument which ignores all ``conftest.py`` files. + 2.7.2 (compared to 2.7.1) ----------------------------- diff --git a/_pytest/config.py b/_pytest/config.py index ccab94747..b358cfd4c 100644 --- a/_pytest/config.py +++ b/_pytest/config.py @@ -120,6 +120,7 @@ class PytestPluginManager(PluginManager): self._path2confmods = {} self._conftestpath2mod = {} self._confcutdir = None + self._noconftest = False self.add_hookspecs(_pytest.hookspec) self.register(self) @@ -212,6 +213,7 @@ class PytestPluginManager(PluginManager): current = py.path.local() self._confcutdir = current.join(namespace.confcutdir, abs=True) \ if namespace.confcutdir else None + self._noconftest = namespace.noconftest testpaths = namespace.file_or_dir foundanchor = False for path in testpaths: @@ -236,6 +238,8 @@ class PytestPluginManager(PluginManager): self._getconftestmodules(x) def _getconftestmodules(self, path): + if self._noconftest: + return [] try: return self._path2confmods[path] except KeyError: diff --git a/_pytest/main.py b/_pytest/main.py index f9566712e..d84370e64 100644 --- a/_pytest/main.py +++ b/_pytest/main.py @@ -54,6 +54,9 @@ def pytest_addoption(parser): group.addoption('--confcutdir', dest="confcutdir", default=None, metavar="dir", help="only load conftest.py's relative to specified dir.") + group.addoption('--noconftest', action="store_true", + dest="noconftest", default=False, + help="Don't load any conftest.py files.") group = parser.getgroup("debugconfig", "test session debugging and configuration") diff --git a/testing/test_conftest.py b/testing/test_conftest.py index 4f967c915..4791d6f61 100644 --- a/testing/test_conftest.py +++ b/testing/test_conftest.py @@ -24,6 +24,7 @@ def conftest_setinitial(conftest, args, confcutdir=None): def __init__(self): self.file_or_dir = args self.confcutdir = str(confcutdir) + self.noconftest = False conftest._set_initial_conftests(Namespace()) class TestConftestValueAccessGlobal: @@ -162,6 +163,11 @@ def test_conftest_confcutdir(testdir): result.stdout.fnmatch_lines(["*--xyz*"]) assert 'warning: could not load initial' not in result.stdout.str() +def test_no_conftest(testdir): + testdir.makeconftest("assert 0") + result = testdir.runpytest("--noconftest") + assert result.ret == 0 + def test_conftest_existing_resultlog(testdir): x = testdir.mkdir("tests") x.join("conftest.py").write(py.code.Source("""