类方法修饰器在自动化测试中的解耦作用( 二 )


图4
在测试用例难以解耦的情况下,每写下一个用例就要封装上一个用例的方法,这会导致代码长度翻倍增长 。因此控制setUp和方法只执行一次是必须的,把代码再稍微修改一下,这时修饰器@登场了,输出结果如 图5,可见setUp 和只输出一次 。在实际的自动化模块测试中,主要是具体问题具体分析整个流程思路,不一定必须要控制setUp 和只输出一次的,具体要在实际测试经验中而决定 。
import unittestdef set_A(a, b):a = a*2b = b*2return a, bclass TestCase(unittest.TestCase):@classmethoddef setUpClass(self):self.a = 2self.b = 3print('set up over :')print('a = %s, b = %s \n'%(self.a, self.b))@classmethoddef tearDownClass(self):a = 0b = 0print('tear down over :')print('a = %s, b = %s'%(a, b))print('__________________________________________________________')def test_case_B(self):a, b = set_A(self.a, self.b)a = a*2b = b*2print('run B over :')print('a= %s, b = %s \n'%(a, b))def test_case_A(self):a = self.a*2b = self.b*2print('run A over :')print('a = %s, a = %s \n'%(a, b))def test_case_C(self):a = self.a*4b = self.b*4print('run C over :')print('a = %s, a = %s \n'%(a, b))if __name__ == '__main__':suite = unittest.TestSuite()suite.addTest(TestCase("test_case_A"))suite.addTest(TestCase("test_case_B"))suite.addTest(TestCase("test_case_C"))runner = unittest.TextTestRunner()runner.run(suite)
图5