Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不包括python测试中的目录、模块_Python_Unit Testing_Testing_Nose - Fatal编程技术网

不包括python测试中的目录、模块

不包括python测试中的目录、模块,python,unit-testing,testing,nose,Python,Unit Testing,Testing,Nose,我们使用nose来发现测试并运行它们。所有测试都是以兼容的方式编写的,因此任何测试运行者都可以运行测试用例。问题是我们有一些没有任何测试的目录。但测试运行者继续从中发现测试。如果其中一个目录有很多文件,它就会被卡住。那么,如何排除该目录 目前我正在执行 nosetests --processes=10 --verbosity 2 但是有一个名为scripts的目录,它需要很长时间才能从中发现测试。所以我想排除它。我试过了 nosetests --processes=10 --verbosity

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

目前我正在执行

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

nosetests --processes=10 --verbosity 2 --exclude='^scripts$'
但是运气不好。

有一个专门用于此任务的插件:

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

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

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

除了传递命令行参数外,还可以设置环境变量
NOSE\u EXCLUDE\u DIRS
或设置
EXCLUDE dir
配置键。

还可以使用
--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

请参阅:。

可能不是OP要求的,但我发现nose文档中的这一小贴士有助于将文件排除在考虑范围之外:

如果对象定义的
\uuuuuuuuuuuuuuuuuuuuuuuuuuu
属性的计算结果不为True,则不会收集该对象,也不会收集其包含的任何对象


所以没有直接的方法来做这些,因此插件?@shiplu.mokadd.im恐怕插件是这里最好的选择
--exclude
nose参数不应用于目录。我个人使用过这个插件,它帮我完成了任务。@shiplu.mokadd.im如果它对你有用,我会在回答中再添加一件事。将
\uuuu test\uuuu=False
添加到
脚本
包的
\uuuu init\uuuu
中。(当然,如果脚本是一个包)。让我知道它是否适合你。谢谢。对于Django,我必须执行
——exclude dir=/path/to/project/app/tests
——这是我想要排除的测试的实际目录。上面没有父目录。
nosetests-s-v-x*--ignore files=“Test1\.py”--ignore files=“Test2\.py”
这是我正在尝试的,但没有成功。这似乎是nose2现在唯一可以接受的答案;遗憾的是,在Python2下运行时,这不起作用,您试图让它跳过一个Python3源文件,而它甚至无法解析/编译该源文件以达到这一目的。。。