I have a mixed Python/C++ library with test files mixed in amongst source files in the same directories. The layout looks like
/home/irving/geode
geode
__init__.py
vector
__init__.py
test_vector.py
...
...
Unfortunately, the library is unusable in-place since it lacks .so extension modules. Question: Can I make py.test always use an installed version, even when run from /home/irving/geode
or a subdirectory?
The test files have from __future__ import absolute_import
, and run fine if executed directly as scripts. For example, if I do
cd geode/vector
./test_vector.py
which does import geode
, it finds the installed version. However, if I run py.test in geode/vector
, it finds the local copy of geode
, and then dies.
I think you have two options:
run py.test --pyargs geode.vector.test_vector
to make pytest interpretet the argument as an import path, deriving the file system path from it. This should run the test against the installed version.
move the tests out into a tests
directory without an __init__.py
file. This way you need to pip install -e .
to work in-place or can do python setup.py install
and the py.test tests
to run tests against the installed version.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With