nose框架命令行regex模式匹配不起作用(-e,-m,-i)



python nosetest框架有一些命令行选项,可以为测试包含、排除和匹配regex,这些选项可以分别包含/排除和匹配。

然而,它们似乎工作不正常。

[kiran@my_redhat test]$ nosetests -w cases/ -s -v  -m='_size'
----------------------------------------------------------------------
Ran 0 tests in 0.001s
OK
[kiran@my_redhat test]$ grep '_size' cases/test_case_4.py
    def test_fn_size_sha(self):

nose框架的regex匹配语义有什么问题吗?

Nosetests的-m参数用于匹配目录、文件名、类和函数。(请参阅nose-docs对此参数的解释)在您的情况下,测试文件的文件名(test_case_4.py)与-m匹配表达式(_size)不匹配,因此永远不会打开。

你可能会注意到,如果你强迫nose打开你的测试文件,它只运行指定的测试:

nosetests -sv -m='_size' cases/test_case_4.py

通常,当我想匹配特定的测试或测试子集时,我会使用--attrib插件,它在默认的nose安装中可用。您可能还想尝试排除与某些模式匹配的测试。

在指定regexp:时尝试删除'='

$ nosetests -w cases/ -s -v -m '_size'

或者保留"="并拼写出--match:

$ nosetests -w cases/ -s -v --match='_size'

Nose可能使用Python的re.match或类似的东西,这需要在字符串的开头进行匹配。_size不匹配,因为函数名test_fn_size_sha不是以正则表达式_size开头。

尝试使用从一开始就匹配的正则表达式:

nosetests -w cases/ -s -v -m='w+_size'

这对我有用。

nosetests --collect-only test_mytesttest_category --exclude=test_.*Pin

在这里,我排除了所有在测试用例名称中有一个单词"Pin"的测试。

注意:在我的案例中,所有测试用例名称都以test_开头。

最新更新