unittest根據測試資料動態生成test_case
阿新 • • 發佈:2022-03-16
在以往的基於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))
|