我的代码:
class TestSystemPromotion(unittest2.TestCase):
@classmethod
def setUpClass(self):
...
self.setup_test_data()
..
def test_something(self):
...
def setup_test_data(self):
...
if __name__ == '__main__':
unittest2.main()
我得到的错误是:
TypeError: unbound method setup_test_data() must be called with TestSystemPromotion
instance as first argument (got nothing instead)
答案 0 :(得分:14)
您无法从类方法中调用实例方法。要么考虑使用setUp
,要么使setup_test_data
成为类方法。此外,如果您调用参数cls
而不是self
来避免混淆,那会更好 - 类方法的第一个参数是类,而不是实例。 <{1}}被调用时,实例(self
)根本不存在。
setUpClass
或者:
class TestSystemPromotion(unittest2.TestCase):
@classmethod
def setUpClass(cls):
cls.setup_test_data()
@classmethod
def setup_test_data(cls):
...
def test_something(self):
...
为了更好地理解,你可以这样想:class TestSystemPromotion(unittest2.TestCase):
def setUp(self):
self.setup_test_data()
def setup_test_data(self):
...
def test_something(self):
...