使用具有大量初始化工作的简单类:
class MyClass():
def __init__(self, attr1, attr2):
self._init_method1(attr1)
self._init_method2(attr2)
self._init_method3
def _init_method1(self, attr1)
...
...我试着使用unittest2来测试_init_methods,这做了一些计算:
class MyTest(unittest.TestCase):
def setUp(self):
self.my_class = MyClass(ATTR1, ATTR2)
def test_init_method1(self):
...
def test_init_method2(self):
...这样做是不合适的:如果任何test_init方法失败,那么每个方法都会失败,因为setUp方法会失败。
发布于 2013-10-30 21:41:53
您需要在不调用MyClass的情况下创建MyClass.__init__实例,直接调用静态方法MyClass.__new__,类本身作为第一个参数。
class MyTest(unittest.TestCase):
def setUp(self):
self.my_class = MyClass.__new__(MyClass)
def test_init_method1(self):
attr1 = ...
result = self.my_class._init_method1(attr1)当您调用x = MyClass(attr1, attr2)时,它大致相当于:
x = MyClass.__init__( MyClass.__new__(MyClass, attr1, attr2),
attr1,
attr2 )https://stackoverflow.com/questions/19694150
复制相似问题