配置nose2

配置文件

nose2的大多数配置是通过配置文件完成的。这些是标准的.ini样式的配置文件,节用括号(“)标记。`` [单元测试] “)和 ``key = value 在这些区域内配对。当值是一个列表时,将每个值放入自己的行中,并适当缩进:

key_expecting_list = value1
                     value2

两个命令行选项, -c--no-user-config 可用于确定加载了哪些配置文件。

-c CONFIG, --config CONFIG

要加载的配置文件。默认行为是查找 unittest.cfgnose2.cfg 在开始目录以及任何用户配置文件中(除非 --no-user-config 已选定)。

--no-user-config

不要加载用户配置文件。如果未指定,除了标准配置文件和 -c ,nose2将查找 .unittest.cfg.nose2.cfg 在用户的$home目录中。

配置测试发现

这个 [unittest] nose2配置文件的部分用于配置nose2本身。以下选项可用于配置测试发现:

start-dir

此选项配置默认目录以启动发现。默认值为 "." (执行nose2的当前目录)。这个目录是nose2开始查找测试的地方。

code-directories

此选项将nose2配置为将命名目录添加到sys.path和发现路径。如果项目的代码不在项目的顶层或目录中,请使用此选项 libsrc . 这里的值可能是一个列表:在配置文件中将每个目录放在自己的行上。

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

要排除的插件列表。在每一行上放置一个插件模块。

注解

这两者都需要重复 pluginsexclude-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 设置班级级别 defaultPluginsexcludePlugins 用于更改插件加载的属性。

当从模块加载插件是不够的

这些都没用 如果你需要注册一个插件 实例 你已经装好了。为此,请使用 extraHooks 关键字参数 nose2.discover . 在这里,您传递一个包含两个元组的列表,每个元组包含一个钩子名称和一个插件。 实例 注册那个钩子。这允许您注册需要运行时配置的插件,而运行时配置不容易通过正常通道传入——并且还可以注册 不是nose2插件的对象 作为钩状目标。下面是一个小例子:

if __name__ == '__main__':
  import nose2

  class Hello(object):
      def startTestRun(self, event):
          print("hello!")

  nose2.discover(extraHooks=[('startTestRun', Hello())])

当与期望您提供他们执行的测试运行程序而不是自己执行测试(例如Django)的其他系统集成时,这非常有用。