假设您有一个名为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中,而不必指定它们出现的每个文件?
答案 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
就可以了。