1. 程式人生 > 其它 >unittest根據測試資料動態生成test_case

unittest根據測試資料動態生成test_case

在以往的基於unittest測試框架中,測試用例是人為開發的以.py的指令碼形式存在的,對應檔案中的測試資料;但是在測試平臺中,測試用例資料是儲存在資料庫中,

譬如你有10組資料,那麼得到10個test case,用純手工的方式寫那麼多個test_成員函式在測試平臺中是不現實的,這樣也就失去了平臺的意義。

我們的思路是:

1.開發一個繼承unittest的測試demo類(TestCase),類中有一個demo測試用例。

2.利用setattr來自動為已有的TestCase類新增成員函式。

3.為了使這個方法湊效,需要用類的static method來生成decorate類的成員函式,並使該函式返回一個test函式物件出去。

4.在某個地方註冊這個新增test成員函式的呼叫(只需要在實際執行前就可以,可以放在模組中自動執行亦可以手動呼叫)

class Test(unittest.TestCase):       def setUp(self):         print("start")       def demo(self, request_data):         #測試用例demo         #一些測試步驟       @staticmethod     def getTestFunc(data):         def func(self):
            self.demo(data)         return func       def tearDown(self):         print("end")     # 根據測試資料動態新增測試函式 def __generate_testcases(data_list):     for fun in dir(Test):         if 'test_case_' in fun:             delattr(Test, fun)     for data in data_list:         setattr(Test, 
"test_case_%s" % (data["case_name"]), Test.getTestFunc(data))