可能重複:
How to generate dynamic (parametrized) unit tests in python?Python的單元測試和動態創建測試用例
有沒有一種方法可以動態地創建unittest
測試用例?我曾嘗試以下..
class test_filenames(unittest.TestCase):
def setUp(self):
for category, testcases in files.items():
for testindex, curtest in enumerate(testcases):
def thetest():
parser = FileParser(curtest['input'])
theep = parser.parse()
self.assertEquals(theep.episodenumber, curtest['episodenumber'])
setattr(self, 'test_%s_%02d' % (category, testindex), thetest)
..這正確創建的所有方法(他們dir()
顯示和可調用),但單元測試的測試探測器,也nosetest
執行他們(「在冉0測試.. 。「)
因爲我可能會問錯了問題 - 我想實現:
我有一個包含測試數據,輸入文件名列表的文件,和預期的數據(在簡化episodenumber
上面的代碼),存儲在一個Python字典中。關鍵是該類別的值是測試案例的列表,例如..
test_cases = {}
test_cases['example_1'] = [
{'input': 'test.01',
'episodenumber': 1},
{'input': 'test.02',
'episodenumber': 2}
]
test_cases['example_2'] = [
{'input': 'another.123',
'episodenumber': 123},
{'input': 'test.e42',
'episodenumber': 32}
]
目前我剛剛超過所有的數據環路,呼籲self.assertEquals
每個測試。問題是,如果失敗了,我不會看到其餘的失敗,因爲它們也被分組到一個測試中,當斷言失敗時它會中止。
解決這個問題的辦法,我認爲,將是(動態)爲每個測試用例的功能,也許有更好的辦法嗎?
pytest(http://pytest.org/)也支持基於生成器的測試。 – 2009-07-28 16:25:57