配置nose2
配置文件
Nose2可以通过标准的ini风格的配置文件进行配置。默认文件为 unittest.cfg
和 nose2.cfg
在开始目录中。
Ini格式包含用括号(“``”)标记的部分 [unittest] “)和 ``key = value
在这些区段内的配对。如果值是列表,请将每个值放入各自的行中,并使用适当的缩进::
key_expecting_list = value1
value2
两个命令行选项, -c
和 --no-user-config
可用于确定加载了哪些配置文件。
- -c CONFIG, --config CONFIG
要加载的配置文件。默认行为是查找
unittest.cfg
和nose2.cfg
在开始目录以及任何用户配置文件中(除非--no-user-config
已选定)。
配置测试发现
这个 [unittest]
nose2配置文件的部分用于配置nose2本身。以下选项可用于配置测试发现:
- start-dir
此选项配置默认目录以启动发现。默认值为
"."
(执行nose2的当前目录)。这个目录是nose2开始查找测试的地方。
- code-directories
此选项将nose2配置为将命名目录添加到sys.path和发现路径。如果项目的代码不在项目的顶层或目录中,请使用此选项
lib
或src
. 这里的值可能是一个列表:在配置文件中将每个目录放在自己的行上。
- test-file-pattern
此选项配置nose如何检测测试模块。它是一个文件球。
- test-method-prefix
此选项配置nose如何检测测试函数和方法。这里设置的前缀将(通过简单的字符串匹配)与测试用例中每个方法的名称的开头以及测试模块中的每个函数进行匹配。
实例:
[unittest]
start-dir = tests
code-directories = source
more_source
test-file-pattern = *_test.py
test-method-prefix = t
指定要加载的插件
为了避免加载任何插件,请使用 --no-plugins
选项。但是要小心:nose2通过插件进行所有的测试发现和加载,所以除非您在使用自定义的测试加载程序和运行程序时进行修补。 --no-plugins
,nose2什么也不做。
- --no-plugins
不要加载任何插件。 这会杀死 nose2。
要指定要在自动加载的内置插件之外加载的插件,请添加 plugins
在 [unittest]
配置文件中的节。
- plugins
要加载的插件列表。在每一行上放置一个插件模块。
若要排除某些将被加载的插件,请添加 exclude-plugins
在 [unittest]
配置文件中的节。
- exclude-plugins
要排除的插件列表。在每一行上放置一个插件模块。
备注
这两者都需要重复 plugins
和 exclude-plugins
条目,指定插件 模块 ,而不是插件 类 . 模块由(点分隔)指定。 完全合格 姓名。
实例:
[unittest]
plugins = myproject.plugins.frobulate
otherproject.contrib.plugins.derper
exclude-plugins = nose2.plugins.loader.functions
nose2.plugins.outcomes
配置插件
大多数插件都指定了一个可用于配置插件的配置文件部分。如果没有其他内容,则可以将指定配置文件节的任何插件设置为通过包括 always-on = True
在其配置中:
[my-plugin]
always-on = True
Plugins may accept any number of other config values, which may be
booleans, strings, integers or lists. A polite plugin will document
these options somewhere. Plugins that want to make use of nose2's
Sphinx extension as detailed in 记录插件
must extract all of their config values in their __init__
methods.
测试运行程序提示和调整
在单个模块中运行测试
你可以使用 nose2.main
以同样的方式 unittest.main
(和 unittest2.main
)曾经工作过:在单个模块中运行测试。只需在模块末尾放置如下块:
if __name__ == '__main__':
import nose2
nose2.main()
然后 直接运行模块 --换句话说,不要运行 nose2
脚本。
滚动你自己的跑步者
您可以通过前面的 nose2
编写脚本并滚动自己的。为此,您只需编写一个调用 nose2.discover
,例如:
if __name__ == '__main__':
import nose2
nose2.discover()
可以将几个关键字参数传递给 nose2.discover
,所有这些都在 nose2.main.PluggableTestProgram
.
更改默认插件集
添加插件 模块 在自动加载的模块列表中,可以传递要添加的模块名称列表 plugins
)参数或排除 (excludedPlugins
)您也可以子类 nose2.main.PluggableTestProgram
设置班级级别 defaultPlugins
和 excludePlugins
用于更改插件加载的属性。
当从模块加载插件是不够的
这些都没用 如果你需要注册一个插件 实例 你已经装好了。为此,请使用 extraHooks
关键字参数 nose2.discover
. 在这里,您传递一个包含两个元组的列表,每个元组包含一个钩子名称和一个插件。 实例 注册那个钩子。这允许您注册需要运行时配置的插件,而运行时配置不容易通过正常通道传入——并且还可以注册 不是nose2插件的对象 作为钩状目标。下面是一个小例子:
if __name__ == '__main__':
import nose2
class Hello(object):
def startTestRun(self, event):
print("hello!")
nose2.discover(extraHooks=[('startTestRun', Hello())])
当与期望您提供他们执行的测试运行程序而不是自己执行测试(例如Django)的其他系统集成时,这非常有用。