Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PythonNose:在生成的测试上设置description属性_Python_Nose_Attributeerror - Fatal编程技术网

PythonNose:在生成的测试上设置description属性

PythonNose:在生成的测试上设置description属性,python,nose,attributeerror,Python,Nose,Attributeerror,我用的是带鼻子的测试生成器。我想为每个生成的测试提供一个自定义描述 说: 默认情况下,在详细模式下生成的测试的测试名称输出 将是生成器函数或方法的名称,后跟 args传递给可调用的。如果你想展示一个不同的 测试名称,设置生成的可调用项的description属性 但是,这不起作用: class TestGraphics: def test_all(self):

我用的是带鼻子的测试生成器。我想为每个生成的测试提供一个自定义描述

说:

默认情况下,在详细模式下生成的测试的测试名称输出 将是生成器函数或方法的名称,后跟 args传递给可调用的。如果你想展示一个不同的 测试名称,设置生成的可调用项的description属性

但是,这不起作用:

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