在python nosetest中排除目录,模块

时间:2014-06-17 12:06:04

标签: python unit-testing testing nose

我们使用nose来发现测试并运行它们。所有测试都以TestCase兼容的方式编写,因此任何测试运行器都可以运行。问题是我们有一些没有任何测试的目录。但是测试运行者继续从那里发现测试。如果其中一个目录中有很多文件被卡住了。那么如何排除该目录呢?

目前我正在执行

nosetests --processes=10 --verbosity 2

但是有一个名为scripts的目录需要很长时间才能从中发现测试。所以我想排除它。我试过了

nosetests --processes=10 --verbosity 2 --exclude='^scripts$'

但没有运气。

3 个答案:

答案 0 :(得分:17)

有一个nose-exclude插件专门用于该任务:

  

nose-exclude是一个允许您轻松指定的Nose插件   要从测试中排除的目录。

在其他功能中,它引入了一个名为exclude-dir的新命令行参数:

nosetests --processes=10 --verbosity 2 --exclude-dir=/path/to/scripts

您也可以设置NOSE_EXCLUDE_DIRS环境变量,或在.noserc or nose.cfg files中设置exclude-dir配置密钥,而不是传递命令行参数。

答案 1 :(得分:9)

您还可以使用--ignore-files参数排除特定文件。由于这是使用正则表达式,因此您可以在scripts/文件夹中命名文件,以一个特定的前缀开头,然后您可以使用该前缀在正则表达式中进行匹配。

# Exclude just one test file
nosetests your_package --ignore-files="tests_to_exclude\.py" -v
# Exclude all python scripts beginning with `testskip_`
nosetests your_package --ignore-files="testskip_.+\.py" -v

请参阅:Nose documentation

答案 2 :(得分:1)

也许不是OP所要求的,但是我发现这个来自鼻子文档的小问题对于排除文件是有用的:

  

如果某个对象定义了一个不评估为True的__test__属性,则不会收集该对象,也不会收集它包含的任何对象。