If you’re writing a library, or an app, where do the unit test files go?
It’s nice to separate the test files from the main app code, but it’s awkward to put them into a “tests” subdirectory inside of the app root directory, because it makes it harder to import the modules that you’ll be testing.
Is there a best practice here?
18 s
For a file module.py
, the unit test should normally be called test_module.py
, following Pythonic naming conventions.
There are several commonly accepted places to put test_module.py
:
- In the same directory as
module.py
. - In
../tests/test_module.py
(at the same level as the code directory). - In
tests/test_module.py
(one level under the code directory).
I prefer #1 for its simplicity of finding the tests and importing them. Whatever build system you’re using can easily be configured to run files starting with test_
. Actually, the default unittest
pattern used for test discovery is test*.py
.