[TIP] ImportError (No module named 'pytest') - weird coverage and py interaction as a result of tox dependency, manuel triggering it...
Chris Withers
chris at simplistix.co.uk
Thu Jul 3 02:40:23 PDT 2014
On 03/07/2014 09:30, Chris Withers wrote:
> Hi All,
>
> So, with:
>
> nosetests --with-xunit --with-cov
>
> ...I get the following failures on Python 3.* in Linux and Mac:
>
> ERROR: Failure: ImportError (No module named 'pytest')
>
> Full and nasty traceback here:
>
> http://jenkins.simplistix.co.uk/job/testfixtures-virtualenv/PYTHON=3.4,label=linux/333/testReport/junit/nose.failure/Failure/runTest/
>
>
> The weird thing is that if I drop the --with-cov, things work fine.
Some more digging has revealed something interesting.
So, by the time the problematic import statement in test_docs.py is his,
when nose is run --with-cov, sys.modules has 310 keys versus the 260 it
has when run without --with-cov.
When run without coverage, they're all the same type:
(Pdb) set(type(v) for v in sys.modules.values())
{<class 'module'>}
When run with coverage, we get a bunch of things:
(Pdb) set(type(v) for v in sys.modules.values())
{
<class 'py._apipkg.ApiModule'>,
<class 'py._apipkg.AliasModule.<locals>.AliasModule'>,
<class 'py._apipkg.AliasModule.<locals>.AliasModule'>,
<class 'module'>,
<class 'py._apipkg.AliasModule.<locals>.AliasModule'>,
<class 'py._apipkg.AliasModule.<locals>.AliasModule'>
}
...one of which causes problems when the manuel package's introspection
tries to do:
24 -> def absolute_import(name):
25 module_path = normalize_module_path(imp.find_module(name)[1])
26
27 # don't create a new module object if there's already one
that we can reuse
28 for module in list(sys.modules.values()):
29 if module is None or not hasattr(module, '__file__'):
30 continue
31 if module_path == normalize_module_path(module.__file__):
32 return module
(Pdb) hasattr(sys.modules['py.test'], '__file__')
*** ImportError: No module named 'pytest'
So, any ideas?
Chris
--
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
More information about the testing-in-python
mailing list