选择具有属性的测试

备注

0.2版新增功能

按属性筛选测试,不包括属性与任何指定属性不匹配的任何测试。

属性可以是简单的值或列表,也可以是测试方法(或函数)、测试用例类或生成器测试生成的可调用属性。

给定以下测试模块,attrib插件可以通过以下方式(以及其他方式)选择测试。:

备注

所有示例都假定attrib插件已在配置文件中激活:

[unittest]
plugins = nose2.plugins.attrib
import unittest


class Test(unittest.TestCase):
    def test_fast(self):
        pass

    test_fast.fast = 1
    test_fast.layer = 2
    test_fast.flags = ["blue", "green"]

    def test_faster(self):
        pass

    test_faster.fast = 1
    test_faster.layer = 1
    test_faster.flags = ["red", "green"]

    def test_slow(self):
        pass

    test_slow.fast = 0
    test_slow.slow = 1
    test_slow.layer = 2

    def test_slower(self):
        pass

    test_slower.slow = 1
    test_slower.layer = 3
    test_slower.flags = ["blue", "red"]

选择具有属性的测试

像这样跑鼻子:

nose2 -v -A fast

运行这些测试:

test_fast (attrib_example.Test) ... ok
test_faster (attrib_example.Test) ... ok

这将选择将属性定义为任意属性的所有测试 True 价值。

选择没有属性的测试

像这样跑鼻子:

nose2 -v -A '!fast'

运行这些测试:

test_slow (attrib_example.Test) ... ok
test_slower (attrib_example.Test) ... ok

这将选择将属性定义为 False 价值, 那些根本没有属性的测试 .

选择具有具有特定值属性的测试

像这样跑鼻子:

nose2 -v -A layer=2

运行这些测试:

test_fast (attrib_example.Test) ... ok
test_slow (attrib_example.Test) ... ok

这将选择用匹配值定义属性的所有测试。在与指定值进行比较之前,每个测试用例的属性值都转换为字符串。比较不区分大小写。

选择在列表属性中具有值的测试

像这样跑鼻子:

nose2 -v -A flags=red

运行这些测试:

test_faster (attrib_example.Test) ... ok
test_slower (attrib_example.Test) ... ok

自从 flags 属性是一个列表,此测试选择具有值的所有测试 red 在他们 flags 属性。字符串转换后完成的比较,不区分大小写。

选择列表属性中没有值的测试

像这样跑鼻子:

nose2 -v -A '!flags=red'

运行这些测试:

test_fast (attrib_example.Test) ... ok

这种情况下的结果可能有点违反直觉。什么? attrib 当您否定列表中的一个属性时,plugin选择只有那些测试 具有列表属性 但是 没有价值 明确规定。根本没有属性的测试是 not 挑选出来的。

使用python表达式选择测试

对于更复杂的情况,可以使用 -E 命令行选项,用于传递将在每个测试用例的上下文中计算的Python表达式。只有当表达式的计算结果为 True (不引发异常)将被选中。

像这样跑鼻子:

nose2 -v -E '"blue" in flags and layer > 2'

仅运行一个测试::

test_slower (attrib_example.Test) ... ok

命令行选项

-A DEFAULT, --attribute DEFAULT

选择具有匹配属性的测试

-E DEFAULT, --eval-attribute DEFAULT

为给定的python表达式计算的属性选择测试 True

插件类引用:attributeselector

class nose2.plugins.attrib.AttributeSelector(*args, **kwargs)[源代码]

按属性筛选测试

handleArgs(args)[源代码]

如果定义了任何属性,则注册

moduleLoadedSuite(event)[源代码]

按指定属性筛选event.suite