Python的单元测试发现找不到我的测试!
我一直在使用nose来发现我的单元测试,它工作得很好。在我的项目顶层,如果我运行nosetests,我会得到:
Ran 31 tests in 0.390s现在有了Python2.7单元测试has discovery,我已经尝试使用
python -m unittest discover但我得到了
Ran 0 tests in 0.000s我的目录结构是:
myproj/
reporter/
__init__.py
report.py
[other app modules]
tests/
__init__.py
test-report.py
[other test modules]你知道为什么unittest的发现算法找不到测试吗?
我在Windows7上使用的是Python 2.7.1和nose 1.0.0。
发布于 2011-02-23 18:58:08
这种行为是故意的,但文档可以让这一点变得更清楚。如果你看一下测试发现部分的第一段,它说:
要使项目的测试与测试发现兼容,它们必须都可以从项目的顶级目录导入(换句话说,它们必须都在
包中)。
由此推论,文件名也必须是有效的Python模块名。test-report.py没有通过测试,因为test-report不是合法的Python标识符。
建议在-p模式选项的文档中明确提到这一点的文档bug可能是一个很好的前进方向。
发布于 2019-12-26 03:14:05
我之所以有这个问题,是因为项目中的一些目录缺少__init__.py。我想在Python3.7中我不需要它们。
只需将__init__.py添加到每个目录,python3 -m unittest就会自动查找测试。
发布于 2019-04-25 22:05:31
作为Python的新手,文档中的命名约定暗示了相反的情况。Ben的评论非常有用:默认的发现模式查找以字符串"test“为前缀的测试模块。
我认为内省只会查找类名,而不需要特定的文件命名约定。
文档是这样说的:https://docs.python.org/3/library/unittest.html python -m unittest discover -s project_directory -p "__test.py“我不能让它工作,但通过将我的文件名改为"test__.py”-成功!
https://stackoverflow.com/questions/5088960
复制相似问题