[Pytest-commit] Issue #472: skipif documentation has broken example using pytest.config (hpk42/pytest)
Wichert Akkerman
issues-reply at bitbucket.org
Tue Mar 4 18:37:37 CET 2014
New issue 472: skipif documentation has broken example using pytest.config
https://bitbucket.org/hpk42/pytest/issue/472/skipif-documentation-has-broken-example
Wichert Akkerman:
The [skip and xfail](https://pytest.org/latest/skipping.html) documentation has an example at the end of the page showing how to use ```pytest.config`` to make a skip conditional on the test runner configuration:
```
@pytest.mark.skipif(not pytest.config.getvalue("db"),
reason="--db was not specified")
def test_function(...):
pass
```
I tried to use that mechanism to make a test conditional on the use of PostgreSQL with tests:
```
def pytest_generate_tests(metafunc):
if 'sqlalchemy_url' in metafunc.fixturenames:
metafunc.parametrize('sqlalchemy_url', [metafunc.config.option.database])
require_postgres = pytest.mark.skipif(
not pytest.config.getvalue('database').startswith('postgresql'),
reason='PostgreSQL database required')
```
When I try to run my tests with this I get the following error:
```
Traceback (most recent call last):
File "bin/py.test", line 62, in <module>
sys.exit(pytest.main())
File "/Users/wichert/Library/buildout/eggs/pytest-2.5.2-py2.7.egg/_pytest/config.py", line 19, in main
config = _prepareconfig(args, plugins)
File "/Users/wichert/Library/buildout/eggs/pytest-2.5.2-py2.7.egg/_pytest/config.py", line 63, in _prepareconfig
pluginmanager=pluginmanager, args=args)
File "/Users/wichert/Library/buildout/eggs/pytest-2.5.2-py2.7.egg/_pytest/core.py", line 377, in __call__
return self._docall(methods, kwargs)
File "/Users/wichert/Library/buildout/eggs/pytest-2.5.2-py2.7.egg/_pytest/core.py", line 388, in _docall
res = mc.execute()
File "/Users/wichert/Library/buildout/eggs/pytest-2.5.2-py2.7.egg/_pytest/core.py", line 289, in execute
res = method(**kwargs)
File "/Users/wichert/Library/buildout/eggs/pytest-2.5.2-py2.7.egg/_pytest/helpconfig.py", line 27, in pytest_cmdline_parse
config = __multicall__.execute()
File "/Users/wichert/Library/buildout/eggs/pytest-2.5.2-py2.7.egg/_pytest/core.py", line 289, in execute
res = method(**kwargs)
File "/Users/wichert/Library/buildout/eggs/pytest-2.5.2-py2.7.egg/_pytest/config.py", line 618, in pytest_cmdline_parse
self.parse(args)
File "/Users/wichert/Library/buildout/eggs/pytest-2.5.2-py2.7.egg/_pytest/config.py", line 711, in parse
self._preparse(args)
File "/Users/wichert/Library/buildout/eggs/pytest-2.5.2-py2.7.egg/_pytest/config.py", line 691, in _preparse
args=args, parser=self._parser)
File "/Users/wichert/Library/buildout/eggs/pytest-2.5.2-py2.7.egg/_pytest/core.py", line 377, in __call__
return self._docall(methods, kwargs)
File "/Users/wichert/Library/buildout/eggs/pytest-2.5.2-py2.7.egg/_pytest/core.py", line 388, in _docall
res = mc.execute()
File "/Users/wichert/Library/buildout/eggs/pytest-2.5.2-py2.7.egg/_pytest/core.py", line 289, in execute
res = method(**kwargs)
File "/Users/wichert/Library/buildout/eggs/pytest-2.5.2-py2.7.egg/_pytest/capture.py", line 83, in pytest_load_initial_conftests
return __multicall__.execute()
File "/Users/wichert/Library/buildout/eggs/pytest-2.5.2-py2.7.egg/_pytest/core.py", line 289, in execute
res = method(**kwargs)
File "/Users/wichert/Library/buildout/eggs/pytest-2.5.2-py2.7.egg/_pytest/config.py", line 674, in pytest_load_initial_conftests
self._conftest.setinitial(args)
File "/Users/wichert/Library/buildout/eggs/pytest-2.5.2-py2.7.egg/_pytest/config.py", line 487, in setinitial
self._try_load_conftest(anchor)
File "/Users/wichert/Library/buildout/eggs/pytest-2.5.2-py2.7.egg/_pytest/config.py", line 493, in _try_load_conftest
self._path2confmods[None] = self.getconftestmodules(anchor)
File "/Users/wichert/Library/buildout/eggs/pytest-2.5.2-py2.7.egg/_pytest/config.py", line 512, in getconftestmodules
clist.append(self.importconftest(conftestpath))
File "/Users/wichert/Library/buildout/eggs/pytest-2.5.2-py2.7.egg/_pytest/config.py", line 538, in importconftest
self._conftestpath2mod[conftestpath] = mod = conftestpath.pyimport()
File "/Users/wichert/Library/buildout/eggs/py-1.4.20-py2.7.egg/py/_path/local.py", line 608, in pyimport
__import__(pkgpath.basename)
File "/Users/wichert/myapp/tests/__init__.py", line 5, in <module>
not pytest.config.getvalue('database').startswith('postgres'),
AttributeError: 'module' object has no attribute 'config'
```
More information about the pytest-commit
mailing list