[Pytest-commit] Issue #497: py.test fails when testing code that uses oslo.config and a config file (hpk42/pytest)
Philipp Sonntag
issues-reply at bitbucket.org
Thu Apr 3 09:18:23 CEST 2014
New issue 497: py.test fails when testing code that uses oslo.config and a config file
https://bitbucket.org/hpk42/pytest/issue/497/pytest-fails-when-testing-code-that-uses
Philipp Sonntag:
Hello,
I was refactoring a tool in a package that I'm working on, to use oslo.config for it's
configuration. After that, I wanted to re-run the tests I did so far, but py.test fails with
```
#!python
(...)
> CONF(default_config_files=[_conffile])
/Library/Python/2.7/site-packages/oslo/config/cfg.py:1632: in __call__
> else sys.argv[1:])
/Library/Python/2.7/site-packages/oslo/config/cfg.py:2133: in _parse_cli_opts
> return self._parse_config_files()
/Library/Python/2.7/site-packages/oslo/config/cfg.py:2148: in _parse_config_files
> return self._oparser.parse_args(self._args, namespace)
/Library/Python/2.7/site-packages/oslo/config/cfg.py:1496: in parse_args
> return super(_CachedArgumentParser, self).parse_args(args, namespace)
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/argparse.py:1691: in parse_args
> self.error(msg % ' '.join(argv))
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/argparse.py:2361: in error
> self.exit(2, _('%s: error: %s\n') % (self.prog, message))
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/argparse.py:2349: in exit
> _sys.exit(status)
E SystemExit: 2
------------------------------------------------------------------------------------------------- Captured stderr --------------------------------------------------------------------------------------------------
usage: py.test [-h] [--config-dir DIR] [--config-file PATH] [--version]
py.test: error: unrecognized arguments: -l tests/
============================================================================================= 1 error in 0.19 seconds ==============================================================================================
```
I cut of the first 3 lines of the traceback, cause of the package names etc, sorry about that.
What happens in the package:
- the module (using oslo.config) get's imported.
- there's a method in it, *configure()*, that's run when imported
- it set's the configuration and runs * CONF(default_config_files=[_conffile])*
That seems to be where things start to fail. Without a config file being defined, the tests
will run just fine.
I did run that with --trace-config, the output mentions 'active plugins' and lists:
*pytestconfig : <_pytest.config.Config object at 0x108a906d0>*
Could a workaround be, to just 'disable' the plugin? I haven't checked for a way to do so just
yet. I'm also not sure if I get 'plugin' right in this context and if this could be disabled at all.
Nevertheless I'd like to keep using py.test for the tests and I'm (ok, honestly: more or less)
using a TDD approach to this package. But with py.test failing . . .
Sorry, if anything you need to know is missing. Just let me know and I'll update the issue.
I've attached three files, a sample module, a test file for it and a sample config, that
reproduce the issue.
Regards,
Phil
BTW: I never used python unittest framework directly (through unittest.main()), but this
fails for a complete different reason (import error for the package) and nose fails for
the same reason as does py.test.
More information about the pytest-commit
mailing list