PythonNose:在生成的测试上设置description属性
我用的是带鼻子的测试生成器。我想为每个生成的测试提供一个自定义描述 说: 默认情况下,在详细模式下生成的测试的测试名称输出 将是生成器函数或方法的名称,后跟 args传递给可调用的。如果你想展示一个不同的 测试名称,设置生成的可调用项的description属性 但是,这不起作用:PythonNose:在生成的测试上设置description属性,python,nose,attributeerror,Python,Nose,Attributeerror,我用的是带鼻子的测试生成器。我想为每个生成的测试提供一个自定义描述 说: 默认情况下,在详细模式下生成的测试的测试名称输出 将是生成器函数或方法的名称,后跟 args传递给可调用的。如果你想展示一个不同的 测试名称,设置生成的可调用项的description属性 但是,这不起作用: class TestGraphics: def test_all(self):
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 here上设置description属性?下面的解决方法(已描述和)似乎有效
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
试试self.run_sim.\uuuuu name_uuu=str(i)可能是@Oleksiy的一个副本甚至都没有关闭:这个问题不使用测试类,答案甚至不使用生成的屈服测试。谢谢你的指点,非常有用!我尝试了第三个例子,因为这是最适合我的类范例的例子,但问题是,传递给check_的“self”似乎与我直接调用的不一样。例如,如果我定义了一个def setUp(self):self.x=2,那么我就无法从check_even()引用self.x,尽管如果直接从yield调用check_even(),而不经过部分调用,那么这样做没有问题。知道这里发生了什么吗?使用nose,如
def setup\u class(cls):
而不是setup():
。
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