Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Recursive unittest discovery with python3 and without __init__.py files

I have project with the following directory structure:

.
├── requirements.txt
├── main.py
├── tests
    ├── unit
    │   └── test_thing1.py
    │   └── test_thing2.py
    └── integration
        └── test_integration_thing1.py
        └── test_integration_thing2.py

I want to run all tests with one command. If I do python -m unittest discover, no tests are executed.

I found this question that suggest adding a __init__.py file to make packages out of the unit and integration folders. The solution works, and all tests are running this way.

But since I'm using python3 and __init__.py files are not required with implicit namespace packages, I was wondering if there was a way to make this works without those __init__.py files.

like image 406
Timothée Jeannin Avatar asked Oct 27 '17 13:10

Timothée Jeannin


1 Answers

I looked into it, and think its most likely a bug.

So I created a python bug report and a PR which fixes the issue for me.

Clone it and see if it works for you as well, with the fix the best way of running discover was python -m unittest discover -s tests. Otherwise it will look in for example virtual environments that are below the top dir.

like image 123
SimonF Avatar answered Nov 12 '22 04:11

SimonF