tests package gets installed
asmodehn opened this issue · 1 comments
While playing with a package made from this template, I notice the tests
package gets found by setuptools when running python setup.py install
and installed as a tests
package (visible in site-packages
).
Probably not what we want ?
I would advise to remove the __init__
module from there, following pytest structure https://docs.pytest.org/en/latest/goodpractices.html#tests-outside-application-code
Hi Alex,
I agree with you, the tests
directory should not be a package but in some situations, developers add an __init__.py
file in order to define some "global" variables or functions used in the tests.
Classic usages which come in mind:
- define the path to a resources directory.
- define a base class for unit testing: a child of
unittest.TestCase
, - define a function to populate a database.
Of cours, one can use PyTest fixtures for that. But unittest users won't…
Actually this is a problem with setuptools.find_packages
because it searches packages in all directories.
If you generate a hypothetical "demo" project, you can check the result of find_packages
:
python -c "from setuptools import find_packages; print(find_packages())"
['demo', 'tests']
The workaround is to exclude the tests
directory. For instance, here is how you can fix the problem for the "demo" project:
$ python -c "from setuptools import find_packages; print(find_packages(exclude=('tests',)))"
['demo']
To conclude, IMO, we can:
- remove the
tests/__init__py
and let the developer adding one if he thinks it's necessary, - exclude the
tests
directory from the list of packages in the call offind_packages
.
Regards,
– Laurent.