在python nosetest中排除目录和模块
我们使用nose来发现并运行测试。所有的测试都是按照TestCase
的格式写的,所以任何测试运行器都可以执行它们。问题是我们有一些目录里面没有任何测试。但是测试运行器还是会从这些目录里寻找测试。如果其中一个目录有很多文件,它就会卡住。那么我该如何排除这个目录呢?
目前我执行的是
nosetests --processes=10 --verbosity 2
但是有一个叫scripts
的目录,从里面发现测试需要很长时间。所以我想把它排除掉。我尝试了
nosetests --processes=10 --verbosity 2 --exclude='^scripts$'
但没有成功。
3 个回答
4
也许这不是提问者想要的答案,但我发现这个来自nose文档的小知识很有用,可以用来排除某个文件:
如果一个对象定义了一个叫做
__test__
的属性,并且这个属性的值不是True,那么这个对象就不会被收集,也不会收集它里面包含的任何对象。
11
你还可以使用 --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 文档。
20
有一个专门用于这个任务的插件,叫做 nose-exclude
:
nose-exclude 是一个 Nose 插件,它可以让你轻松指定哪些文件夹在测试时要排除。
这个插件还有其他一些功能,其中之一是新增了一个命令行参数,叫做 exclude-dir
:
nosetests --processes=10 --verbosity 2 --exclude-dir=/path/to/scripts
除了通过命令行参数来设置,你还可以设置一个叫 NOSE_EXCLUDE_DIRS
的环境变量,或者在 .noserc
或 nose.cfg
文件中设置 exclude-dir
配置项。