我的项目具有以下目录结构:
.
├── requirements.txt
├── main.py
├── tests
├── unit
│ └── test_thing1.py
│ └── test_thing2.py
└── integration
└── test_integration_thing1.py
└── test_integration_thing2.py
我想用一个命令运行所有测试。如果我python -m unittest discover
,则不执行任何测试。
我发现this question建议添加__init__.py
文件,以便从unit
和integration
文件夹中创建包。解决方案有效,所有测试都以这种方式运行。
但由于我implicit namespace packages不需要使用python3和__init__.py
文件,因此我想知道是否有办法在没有__init__.py
文件的情况下使其工作。
答案 0 :(得分:6)
我调查了一下,认为它很可能是一个错误。
因此,我创建了一个python bug report和一个PR,可以为我解决此问题。
克隆它并查看它是否也对您有用,通过修复,运行发现的最佳方法是python -m unittest discover -s tests
。否则,它将查找顶部目录下的虚拟环境。
答案 1 :(得分:0)
请注意,名称空间包是常规包。 您不能期望将名称空间包与常规包一样对待。
答案 2 :(得分:-1)
使用pytest。它确实在文件夹中发现了测试。
在您的情况下,您只需要通过via pip(pip install pytest
)安装,然后在根文件夹pytest tests
中运行。