#需求:
在某種狀況下,須要用不一樣的參數組合測試一樣的行爲,你但願從test case的執行結果上知道在測試什麼,而不是單單獲得一個大的 test case;此時若是僅僅寫一個test case並用內嵌循環來進行,那麼其中一個除了錯誤,很難從測試結果裏邊看出來。數組
#問題 問題的關鍵在因而否有辦法根據輸入參數的不一樣組合產生出對應的test case;譬如你有10組數據,那麼獲得10個test case,固然不適用純手工的方式寫那麼多個test_成員函數。框架
一種可能的思路是不利用unittest.TestCase這個類框中的test_成員函數的方法,而是本身寫runTest這個成員函數,那樣會有一些額外的工做,並且看起來不是那麼「智能」。那該如何讓框架自動調用testcase呢?函數
#實現測試
# -*- coding: utf-8 -*- import unittest class MyTestCase(unittest.TestCase): def setUp(self): pass def action(self, arg1, arg2): pass def tearDown(self): pass @staticmethod def getTestFunc(arg1, arg2): def func(self): self.action(arg1, arg2) return func def generate_cases(): data = [('arg11', 'arg12'), ('arg21', 'arg22'), ('arg31', 'arg32')] for args in data: setattr(MyTestCase, 'test_func_%s_%s' % (args[0], args[1]), MyTestCase.getTestFunc(*args)) generate_cases() if __name__ == '__main__': unittest.main()