Colonel Panic Colonel Panic - 1 year ago 73
Python Question

How to run tests without installing package?

I have some Python package and some tests. The files are layed out following

Putting tests into an extra directory outside your actual application
code, useful if you have many functional tests or for other reasons
want to keep tests separate from actual application code (often a good
idea): # your distutils/setuptools Python package metadata

My problem is, when I run the tests
, I get an error

ImportError: No module named 'mypkg'

I can solve this by installing the package
python install
but this means the tests run against the installed package, not the local one, which makes development very tedious. Whenever I make a change and want to run the tests, I need to reinstall, else I am testing the old code.

What can I do?

Answer Source

The normal approach for development is to use a virtualenv and use pip install -e . in the virtualenv (this is almost equivalent to python develop). Now your source directory is used as installed package on sys.path.

There are of course a bunch of other ways to get your package on sys.path for testing, see Ensuring py.test includes the application directory in sys.path for a question with a more complete answer for this exact same problem.