问题
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.
回答1:
I think you have two options:
run
py.test --pyargs geode.vector.test_vectorto 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
testsdirectory without an__init__.pyfile. This way you need topip install -e .to work in-place or can dopython setup.py installand thepy.test teststo run tests against the installed version.
来源:https://stackoverflow.com/questions/19530849/force-py-test-to-use-installed-version-of-module