Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Nose不运行测试_Python_Nose_Nosetests - Fatal编程技术网

Python Nose不运行测试

Python Nose不运行测试,python,nose,nosetests,Python,Nose,Nosetests,假设您有一个名为a的python包,其目录结构如下 A ├── B.py └── __init__.py 其中\uuuu init\uuuu.py为空,B.py的内容由 def test_B(): assert False 在上面的简单包上运行nose会错过测试 $ nosetests A ---------------------------------------------------------------------- Ran 0 tests in 0.000s OK

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

A
├── B.py
└── __init__.py
其中
\uuuu init\uuuu.py
为空,
B.py
的内容由

def test_B():
    assert False
在上面的简单包上运行nose会错过测试

$ nosetests A

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

OK
一个人必须跑

$ nosetests A/B.py
为了赶上考试,但是 如果一个模块内部有一个复杂的子模块结构,那么它很快就会变得笨拙


如何让nose运行包A中以“test”开头的所有函数,而不必指定它们出现的每个文件?

正如@sobolevn所指出的,nose遵循一个:

nose从其工作目录(默认为当前工作目录)中的python源文件、目录和包中自动收集测试。任何与testMatch正则表达式匹配的python源文件、目录或包(默认情况下:(?:^ |[b_。-])[Tt]est)都将作为测试(或测试集合的源代码)进行收集

例如,您可以将
B.py
重命名为
test\u B.py

使用
--all modules
标志:

$ nosetests A --all-modules

今天python 3.8也有同样的问题

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

例如:

|code
|  | __init__.py
|  | A.py
|tests
|  | setup.cfg
|  | test_A.py
setup.cfg
的内容应为:

[nosetests]
traverse-namespace=1

现在运行
nosetests测试将起作用。

这些是您的实际文件名吗?
nose
也遵循关于文件名的约定。B.py还包含正在测试的函数,因此重命名模块将不是一个选项。我选择将测试放在同一个文件中,而不是一个单独的测试_uz.py。@dzhelil在这种情况下,gregb答案肯定是正确的选择。但是,将测试与代码分开是一种很好的做法(例如,
a/test/test_B.py