我有一个带有目录“tests”的程序包,其中存储了单元测试。我的包裹看起来像:

.
├── LICENSE
├── models
│   └── __init__.py
├── README.md
├── requirements.txt
├── tc.py
├── tests
│   ├── db
│   │   └── test_employee.py
│   └── test_tc.py
└── todo.txt

从我的包目录中,我希望能够同时找到tests/test_tc.pytests/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__.pypython -m unittest discover即可导入相关的test_*模块。

关于python - 递归单元测试发现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29713541/

10-15 22:54