我有一个带有目录“tests”的程序包,其中存储了单元测试。我的包裹看起来像:
.
├── LICENSE
├── models
│ └── __init__.py
├── README.md
├── requirements.txt
├── tc.py
├── tests
│ ├── db
│ │ └── test_employee.py
│ └── test_tc.py
└── todo.txt
从我的包目录中,我希望能够同时找到
tests/test_tc.py
和tests/db/test_employee.py
。我不想不必安装第三方库(nose
或其他),也不必手动构建TestSuite
来运行它。当然,有一种方法可以告诉
unittest discover
在找到测试后不要停止寻找? python -m unittest discover -s tests
将找到tests/test_tc.py
,而python -m unittest discover -s tests/db
将找到tests/db/test_employee.py
。没有找到两者的方法吗? 最佳答案
在进行一些挖掘时,似乎只要可以导入更深层的模块,它们就会通过python -m unittest discover
被发现。因此,解决方案只是将__init__.py
文件添加到每个目录以使其成为软件包。
.
├── LICENSE
├── models
│ └── __init__.py
├── README.md
├── requirements.txt
├── tc.py
├── tests
│ ├── db
│ │ ├── __init__.py # NEW
│ │ └── test_employee.py
│ ├── __init__.py # NEW
│ └── test_tc.py
└── todo.txt
只要每个目录都有一个
__init__.py
,python -m unittest discover
即可导入相关的test_*
模块。关于python - 递归单元测试发现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29713541/