我使用带鼻子的测试发生器。我想为每个生成的测试提供自定义描述。
默认情况下,详细模式下生成的测试的测试名称输出 将是生成器函数或方法的名称,后跟 args传递给屈服的callable。如果你想表现出不同的 测试名称,设置产生的可调用的描述属性。
但是,这不起作用:
class TestGraphics:
def test_all(self):
for i, tc in enumerate(testcases):
self.run_sim.description = str(i)
yield(self.run_sim, tc[0], tc[1])
我明白了:
AttributeError: 'method' object has no attribute 'description'
如何在callable上设置description属性?
答案 0 :(得分:4)
from nose.tools import assert_true
class TestEven:
def test_evens(self):
for i in range(0, 5):
yield self.check_even("check_even with {}".format(i)), i
def check_even(self, desc):
func = lambda n: assert_true(n % 2 == 0)
func.description = desc
return func
class TestEven:
def test_evens(self):
for i in range(0, 5):
yield CheckEven(), i
class CheckEven:
def __call__(self, n):
self.description = "check_even with {}".format(n)
assert n % 2 == 0
from functools import partial
class TestEven:
def test_evens(self):
for i in range(0, 5):
f = partial(self.check_even, i)
f.description = 'check_even with {}'.format(i)
yield (f, )
def check_even(self, n):
assert n % 2 == 0