unittest框架中有多个测试方法,如何实现多个测试方法间参数的传递

如下方代码中参数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()

 上方代码需优化的地方请各位大佬赐教。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

上一篇:2018-2019-2 网络对抗技术 20165221 Exp3 免杀原理与实践


下一篇:unittest加载测试用例名称必须以test开头,是否可以定制化