无法从setUpClass调用本地方法

时间:2011-05-09 14:45:31

标签: python unit-testing

我的代码:

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)

1 个答案:

答案 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): ...