我们使用nose来发现测试并运行它们。所有测试都以TestCase
兼容的方式编写,因此任何测试运行器都可以运行。问题是我们有一些没有任何测试的目录。但是测试运行者继续从那里发现测试。如果其中一个目录中有很多文件被卡住了。那么如何排除该目录呢?
目前我正在执行
nosetests --processes=10 --verbosity 2
但是有一个名为scripts
的目录需要很长时间才能从中发现测试。所以我想排除它。我试过了
nosetests --processes=10 --verbosity 2 --exclude='^scripts$'
但没有运气。
答案 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__
属性,则不会收集该对象,也不会收集它包含的任何对象。