[TIP] py.test and Namespace Package issue

Tom Davis tom at recursivedream.com
Tue Feb 26 07:21:14 PST 2013

I have a couple 2.7-style namespace packages, call 'em:


Now, say I symlink web then api:

    cd ~/foo/{web,api} && python setup.py develop

If I now do `py.test --pyargs foo.web.tests`, the tests will fail with
"ImportError: No module named web.tests.conftest". However! Either of
these work fine:

    python -mpytest
    python setup.py test

I narrowed this down to `py._path.pyimport()` and found that if I
ensured that `pkgpath` is always `None`, it works. Oddly, all three
methods appear to be going through the same code path.

I also discovered that deleting __init__.py from the `tests` directories
also fixed it.

I'm not sure if this is a bug or just an oddity of namespace packages.

More information about the testing-in-python mailing list