Python:Nose不接受新测试

Python:Nose不接受新测试,python,nose,Python,Nose,我刚刚在我的一个Python模块中添加了一个单元测试,nose拒绝接受它。测试如下所示: class TestMargin(unittest.TestCase): def setUp(self): super().setUp() def test_margin(self): self.assertTrue(False) 我本以为这次考试会失败,但似乎还没有开始。我正在使用--所有模块标志运行nose,其他模块中的测试确实正在进行中,所以它似乎

我刚刚在我的一个Python模块中添加了一个单元测试,nose拒绝接受它。测试如下所示:

class TestMargin(unittest.TestCase):

    def setUp(self):
        super().setUp()

    def test_margin(self):
        self.assertTrue(False)
我本以为这次考试会失败,但似乎还没有开始。我正在使用
--所有模块
标志运行nose,其他模块中的测试确实正在进行中,所以它似乎不是nose的一般问题。我已经检查了nose的文档,看不出这个测试不起作用的任何好理由


编辑:我修复了这个问题(有点随意),在模块级别添加了一个空的
\uuu init\uu.py
。但是为什么这会有帮助呢?

您的测试看起来不错,但是您必须将它放在正确的文件名中的正确位置,以便nose发现它

通过使用
-vvv

默认情况下,nose通过检查两件事来决定是否进入目录结构:它是一个包吗?如果是,nose将继续查找目录以获取更多测试。而being意味着拥有
\uuuu init\uuuu.py
文件。这就是为什么添加
\uuuu init\uuuu.py
解决了这个问题

如果目录不是一个包,如果它看起来像一个测试目录,即
tests
,或者如果它看起来像一个源目录,即
src
lib
,nose可能仍然想要查看它。但我想情况并非如此

看看:

任何与testMatch正则表达式匹配的python源文件、目录或包(默认情况下:(?:^ |[b_。-])[Tt]est)都将作为测试(或测试集合的源代码)进行收集。此外,将检查工作目录中找到的所有其他,以查找与testMatch匹配的python源文件或目录。包发现会一直沿着树向下,因此Package.tests和Package.sub.tests以及Package.sub.sub2.tests都将被收集


另外,nose只是一堆python文件,所以您可以随时查看代码,了解它是如何发现测试的。在这种情况下,如果您的命名正确,并且仍然没有选择文件,您可能需要查看selector.py中的方法。可能的原因之一是您的测试文件对其具有可执行权限-rwxr-x。将权限修改为-rw-rw-r--。Python Nose不选择具有可执行权限的文件

如果错误地将可执行标志添加到版本控制中,请按如下方式删除权限

吉特 通过查找权限

git ls-files --stage | grep file_name
删除执行权限,然后提交

git update-index --chmod=-x file_path
SVN 如果存在svn属性,可通过

svn proplist test_file_path
属性删除

svn propdel svn:executable test_file_path

我猜这个模块没有被包括在内。残酷地说,你可以在它的顶部放一个print语句来进行双重检查——尽管nose可能有一种更整洁的方式来打印所有包含的模块!