gpt4 book ai didi

Python: Nose 没有接受新的测试

转载 作者:行者123 更新时间:2023-11-28 22:43:06 24 4
gpt4 key购买 nike

我刚刚向我的一个 Python 模块添加了一个单元测试,但 nose 拒绝接收。测试看起来像这样:

class TestMargin(unittest.TestCase):

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

def test_margin(self):
self.assertTrue(False)

我预计这个测试会失败,但它似乎甚至没有被接受。我正在使用 --all-modules 标志运行 nose,并且其他模块中的测试确实正在被提取,因此它似乎不是 nose 的一般问题。我已经检查了 nose 的文档,但看不出有任何充分的理由说明这个测试不应该起作用......

编辑:我通过(有点随意地)在模块级别添加一个空的 __init__.py 解决了这个问题。但这为什么会有帮助?

最佳答案

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

你可以通过-vvv运行它来查看nose的内部工作

默认情况下,nose 通过检查两件事来决定是否进入你的目录结构:它是一个包吗?如果是,nose 将继续查看目录以进行更多测试。并且是a package in python意味着有 __init__.py 文件。这就是添加 __init__.py 解决问题的原因。

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

看看nose usage documentation :

Any python source file, directory or package that matches the testMatch regular expression (by default: (?:^|[b_.-])[Tt]est) will be collected as a test (or source for collection of tests). In addition, all other packages found in the working directory will be examined for python source files or directories that match testMatch. Package discovery descends all the way down the tree, so package.tests and package.sub.tests and package.sub.sub2.tests will all be collected.

此外,nose 只是一堆 python 文件,因此您始终可以查看代码以了解它如何发现测试。在这种情况下,您可能需要查看 wantDirectory() selector.py 中的方法

关于Python: Nose 没有接受新的测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31136320/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com