2015-04-30 110 views
1

我已經在Python中編寫了一個軟件,它做了很多解析和大量寫入文件到磁盤。我開始寫單元測試,但不知道如何單元測試一個函數,它只是將一些數據寫入磁盤,並且什麼都不返回。如何爲編寫者/解析器編寫測試? (Python)

我熟悉unittest和ddt。任何意見,甚至連接到一個資源,我可以瞭解更多,將不勝感激。

+0

你沒有......有一個函數返回一個字符串......然後寫入磁盤....這樣你可以斷言你得到了預期的字符串......你想測試低級函數(儘可能少的每個函數),然後到你真正寫的時候,所有你必須指望的是python的'open'和'write'工作......這是一個安全的賭注和超出你需要測試的範圍 –

+1

啊,那麼我應該在測試文件上運行解析器,然後檢查解析的數據是否與某些字符串匹配? – ben

+0

將一些確定性內容寫入磁盤並檢查內容是否足夠? – gustafbstrom

回答

3

可以說,最好的解決方案是將你的功能分成兩部分。一塊做解析,另一塊做寫作。然後,你可以單獨測試每件。

對於第一部分,給它一個文件並驗證解析函數返回適當的字符串,和/或引發適當的異常。

對於第二個,給它一個字符串來寫,然後驗證該文件已被寫入,並且內容與您的字符串匹配。跳過寫數據的測試是很誘人的,因爲假設python的開放和寫入函數是有效的。然而,單元測試也證明你傳入的數據是寫入的數據(即:你沒有導致將固定字符串寫入文件的錯誤)。

如果重構代碼不是你可以做的事,你仍然可以測試這個函數。爲它提供要解析的數據,然後打開它寫入的文件,並將結果與​​期望的結果進行比較。