之前一直认为unittest的setUp方法只在TestCase被初始化的时候执行一次 之后的每个test方法中如果对setUp中的相关属性进行了更改的话 会影响到其它的test方法 可能是之前写的测试太少了 或者说几乎没有 最近开始尝试TDD 所以写的有点多 继而发现了那个绕不过去的坎儿
来段代码说明一下吧:
import unittest
class TestDemo(unittest.TestCase):
def setUp(self):
self.array = range(10)
def testpop(self):
self.array.pop()
self.assertEqual(self.array, range(9))
def testAppend(self):
self.array.append(11)
self.assertEqual(self.array, range(9) + [11,])
上面这个例子中 testpop是可以通过测试的 但是testAppend确报错了 原因就是上来就说的setUp方法的调用时机 其实在每次跑一个testcase的时候 都会先调用setUp方法 相应地 tearDown方法 也会在每个测试用例结束后调用