选择具有属性的测试
备注
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