我想寫一個TestCase的最佳方式,但該功能是在循環什麼是編寫測試用例的功能是在循環
def myfunction():
for file in files:
myfun(file, Temp=True)
我想寫一個TestCase的最佳方式,但該功能是在循環什麼是編寫測試用例的功能是在循環
def myfunction():
for file in files:
myfun(file, Temp=True)
瞭解這裏的一個重要的事情是,你不需要測試循環。你需要做的是測試函數本身。
因此寫一個測試,測試myfun
。稍後,您可以添加更多測試,具體取決於myfun
預計可處理的文件類型。
但如何我可以測試我的功能,我想我會用assert調用用,但我的一個參數是在每次迭代變化。你能舉一個小例子我怎麼寫它? – Sanch
如果它只是在循環中調用'myfun',則不需要測試'myfunction'。我這樣說,是因爲,一旦你有'myfun'測試,你就會知道,如果'如預期,因爲你的'myfun'測試將開始在這種情況下,失敗myfunction'不工作。 –
這是不正確的。如果你將'myfunction'重構爲'pass',那麼它會被破壞,但'myfun'的測試不會告訴你。 – jonrsharpe
如果你想測試真的myfunction
,最簡單的方法是通過回調來替代,以myfun
硬編碼的通話,即
def myfunction(callback=myfun):
files = whatever()
for f in files:
callback(f, temp=True)
那麼你可以傳遞你想要的回調爲您測試什麼。
或者用['mock'](http://www.voidspace.org.uk/python/mock/)封裝。 –
你需要給有關的問題和遇到的問題更多的細節。 – Dric512
感謝您的回覆。其實我有一個簡單的功能,在它我只是調用另一個功能,但在循環。現在我想爲這個函數寫一個測試用例嗎? – Sanch
這個功能很難測試的事實指向不好的設計。如果'files'是一個參數,你可以簡單地嘲笑'myfun'並檢查它被調用了正確的次數。你應該分別測試(unmocked!)'myfun'。 – jonrsharpe