如何在Python中访问装饰器中的类属性?

Mah*_*avi 2 python nose nosetests parameterized-unit-test nose-parameterized

我正在尝试使用nose_parameterized测试并希望将其用于单元测试方法。

from nose.tools import assert_equal
from nose_parameterized import parameterized
import unittest

Class TestFoo(unittest.TestCase):
      def setUp(self):
           self.user1 = "Bar"
           self.user2 = "Foo"

      @parameterized.expand([
               ("testuser1",self.user1,"Bar"),
               ("testuser2",self.user2,"Foo")
                ]
      def test_param(self,name,input,expected):
          assert_equal(input,expected)
Run Code Online (Sandbox Code Playgroud)

self在装饰器函数中没有定义。有解决方法吗?我知道我可以使用全局类变量,但我需要在setUp.

jme*_*jme 5

getattr一种解决方法是在装饰器和测试函数中使用包含属性名称的字符串:

@parameterized.expand([
           ("testuser1", "user1", "Bar"),
           ("testuser2", "user2", "Foo")
            ])
def test_param(self, name, input, expected):
    assert_equal(getattr(self, input), expected)
Run Code Online (Sandbox Code Playgroud)

使用这种方法,test_param假设其参数的值input是应检查其值的属性名称expected