如下方代码中参数self.sucessnum和 self.faillnum,需要把test_case2中的self.faillnum值传递给test_case3,以实现一个累加功能。但是unittest框架每个方法都是独立运行的,并没有调用关系。
import unittest
from testframe.testframe_a import Report_testframe
class testcase_ind_a(unittest.TestCase):
@classmethod
def setUpClass(self):
# print("b的setup方法")
self.resultdic = {}
self.sucessnum=0
self.faillnum=0
def test_case1(self):
# print("b测试用例1")
self.resultdic['b测试用例1']='b测试用例1成功'
print(self.resultdic)
self.sucessnum= self.sucessnum + 1
def test_case2(self):
# print("b测试用例2")
self.resultdic['b测试用例2']='b测试用例2失败'
print(self.resultdic)
self.failnum= self.faillnum + 1
def test_case3(self):
# print("b测试用例3")
self.resultdic['b测试用例3']='b测试用例3失败'
print(self.resultdic)
self.failnum= self.faillnum + 1
@classmethod
def tearDownClass(self):
# print("b的teardown方法")
reportobj = Report_testframe()
reportobj.Addresult(str(self.resultdic),str(self.sucessnum),str(self.faillnum))
if __name__ == '__main__':
unittest.main()
在unittest框架中多个方法之间需要进行参数的传递,可以定义全局变量(global)进行实现。
方法中给变量赋了初始值,再进行计算。
import unittest
from testframe.testframe_a import Report_testframe
class testcase_ind_a(unittest.TestCase):
global sucessnum, faillnum #定义全局变量
@classmethod
def setUpClass(self):
# print("b的setup方法")
self.resultdic = {}
def test_case1(self):
# print("b测试用例1")
self.resultdic['b测试用例1']='b测试用例1成功'
print(self.resultdic)
sucessnum = 0
globals()['sucessnum'] = sucessnum + 1
def test_case2(self):
# print("b测试用例2")
faillnum = 0
self.resultdic['b测试用例2']='b测试用例2失败'
print(self.resultdic)
globals()['faillnum'] = faillnum + 1
def test_case3(self):
# print("b测试用例3")
self.resultdic['b测试用例3']='b测试用例3失败'
print(self.resultdic)
globals()['faillnum'] = globals()['faillnum'] + 1
@classmethod
def tearDownClass(self):
# print("b的teardown方法")
reportobj = Report_testframe()
reportobj.Addresult(str(self.resultdic),str(sucessnum),str(faillnum))
if __name__ == '__main__':
unittest.main()
上方代码需优化的地方请各位大佬赐教。