我有一個不同的audioformats的列表,應該轉換某個文件。我寫的轉換函數現在應該轉換文件並返回成功信息,新創建文件的路徑或一些故障信息。第一個斷言失敗後,我可以測試所有測試的斷言嗎?
self.AUDIO_FORMATS = ({'format':'wav', 'samplerate':44100, 'bitdepth':16 },
{'format':'aac', 'samplerate':44100, 'bitdepth':16 },
{'format':'ogg', 'samplerate':44100, 'bitdepth':16 },
{'format':'mp3', 'samplerate':44100, 'bitdepth':16 })
作爲一種可能的原因轉換的一個失敗是缺少庫,或者在這樣的圖書館借了一些錯誤或故障或我實現它,我想測試每個轉換有名單最終通過並且失敗的測試,失敗的測試者告訴我確切的轉換確實造成了麻煩。這是我試過的(有點簡化):
def test_convert_to_formats(self):
for options in self.AUDIO_FORMATS:
created_file_path, errors = convert_audiofile(self.audiofile,options)
self.assertFalse(errors)
self.assertTrue(os.path.isfile(created_file_path),
現在,這是當第一次轉換失敗時立即中止測試。我可以爲每個轉換寫一個測試函數。這將導致必須爲每個添加的格式編寫一個新的測試,現在我只需向AUDIO_FORMATS元組添加一個新字典。
您的單元測試應該只測試一個重點場景。是的,在你的情況下,它正在轉換爲一種特定的格式。但是,每種格式都有特定的場景。您的測試只應測試特定格式的轉換。這並不意味着你必須編寫多個測試,每種格式都有一個測試。您可以通過格式使方法循環,併爲每種格式調用通過特定格式的測試方法。通過這種方式,您可以確保無法轉換1格式的測試不會影響另一個格式的測試,也無需將斷言解析爲數組等。 – Nope 2012-04-23 11:34:00
@Francois:這聽起來幾乎和我打算做的一樣。我只是無法在TestCase中工作。你能提供一個關於如何編碼的例子嗎? (我會相應更新我的問題) – marue 2012-04-23 11:40:36
我來自.Net背景。我不知道python,並且不能給你這個語法。這也是爲什麼我只添加了一條評論,直接嘗試一種更有條理的執行測試的方式。在.NET中,測試框架允許您在測試方法上添加一個屬性,指定您每次調用測試時要傳遞的不同參數集。適用於像您這樣的情況。可悲的是,我不知道如何在python中執行該實現。如果python受限制,「Ates Goral」的解決方案可能是唯一的方法。 – Nope 2012-04-23 11:48:53