首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >` `python -m unittest discover`未发现测试

` `python -m unittest discover`未发现测试
EN

Stack Overflow用户
提问于 2011-02-23 17:20:54
回答 3查看 28K关注 0票数 59

Python的单元测试发现找不到我的测试!

我一直在使用nose来发现我的单元测试,它工作得很好。在我的项目顶层,如果我运行nosetests,我会得到:

代码语言:javascript
复制
Ran 31 tests in 0.390s

现在有了Python2.7单元测试has discovery,我已经尝试使用

代码语言:javascript
复制
python -m unittest discover

但我得到了

代码语言:javascript
复制
Ran 0 tests in 0.000s

我的目录结构是:

代码语言:javascript
复制
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。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-23 18:58:08

这种行为是故意的,但文档可以让这一点变得更清楚。如果你看一下测试发现部分的第一段,它说:

要使项目的测试与测试发现兼容,它们必须都可以从项目的顶级目录导入(换句话说,它们必须都在

包中)。

由此推论,文件名也必须是有效的Python模块名。test-report.py没有通过测试,因为test-report不是合法的Python标识符。

建议在-p模式选项的文档中明确提到这一点的文档bug可能是一个很好的前进方向。

票数 62
EN

Stack Overflow用户

发布于 2019-12-26 03:14:05

我之所以有这个问题,是因为项目中的一些目录缺少__init__.py。我想在Python3.7中我不需要它们。

只需将__init__.py添加到每个目录,python3 -m unittest就会自动查找测试。

票数 19
EN

Stack Overflow用户

发布于 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”-成功!

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5088960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档