Epic 遊戲喜加一:免費領取清版射擊動作遊戲惡魔彈珠檯《DEMON'S TILT》
阿新 • • 發佈:2022-03-29
在以往的基於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))