鼻子没有运行测试

时间:2015-06-06 20:31:20

标签: python nose nosetests

假设您有一个名为A的python包,其目录结构如下

A
├── B.py
└── __init__.py

其中__init__.py为空,B.py的内容由

给出
def test_B():
    assert False

在上面的简单包上运行鼻子会错过测试

$ nosetests A

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK

必须运行

$ nosetests A/B.py

为了赶上考验,但那样 如果在A中有一个复杂的子模块结构,很快变得笨拙。

如何使用“测试”开始使用所有功能。在包A中,而不必指定它们出现的每个文件?

3 个答案:

答案 0 :(得分:2)

使用--all-modules标志:

$ nosetests A --all-modules

答案 1 :(得分:0)

正如@sobolevn所指出的那样,鼻子遵循convention about filenames

  

nose从其工作目录中找到的python源文件,目录和包中自动收集测试(默认为当前工作目录)。任何与testMatch正则表达式匹配的python源文件,目录或包(默认情况下:(?:^ | [b _.-])[Tt] est)将被收集作为测试(或测试集合的源)。 / p>

例如,您可以将B.py重命名为test_B.py

答案 2 :(得分:0)

今天在python 3.8中遇到了同样的问题。

结果证明,在测试文件夹的根目录中添加文件setup.cfg可以解决问题。

示例:

|code
|  | __init__.py
|  | A.py
|tests
|  | setup.cfg
|  | test_A.py

setup.cfg的内容应为:

[nosetests]
traverse-namespace=1

现在运行nosetests tests就可以了。