1

使用一个简单的类进行大量初始化工作:

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_method进行一些计算的 s:

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方法失败。

  1. 解决这个问题的标准方法是什么?
  2. 我应该如何设计我的单元测试以便能够封装测试?
  3. 还是我的班级设计有错误?
4

1 回答 1

0

您需要通过直接调用静态方法来创建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 )
于 2013-10-30T21:41:53.893 回答