我對Python非常陌生,在Github上看到很多使用Mock進行測試的項目,但我不明白爲什麼。
當我們使用模擬,我們構建了一個模仿對象具有特定RETURN_VALUE,我不忠實地明白爲什麼我們這樣做。我知道有時很難建立我們所需的資源,但是如果我們構造一個具有某個返回值的對象/函數,那又有什麼意義呢?Python - 爲什麼我們應該使用模擬來做測試?
0
A
回答
1
模擬可以幫助編寫單元測試。 在單元測試中,您想測試一小部分實現。例如,像一個功能或一個類一樣小。
在一箇中等大小的軟件,這些小零件互相依賴。或者有時會存在外部依賴性。您可以打開文件,執行系統調用或以其他方式獲取外部數據。
在寫代碼的一小部分定向單元測試,你不想花時間去建立周圍的一切它別的。 (文件,系統調用,外部數據)。模擬來到你的幫助。通過模擬,您可以使代碼的其他依賴性按照您的喜好行事。這樣您就可以專注於測試您的預期實現。
即將與返回值的模擬:假設你想測試func_a
。 func_a
調用func_b
。 func_b
做了很多時髦的處理來計算其返回值。例如,與外部服務通話,執行一堆系統調用或其他一些昂貴的操作。由於您正在測試func_a
,因此您只關心可能的返回值func_b
。 (因此func_a
可以使用它們)在這種情況下,您可以模擬func_b
並明確設置返回值。這可以真正簡化您的測試複雜性。
相關問題
- 1. 爲什麼有時我們使用特定的位來做模板測試?
- 2. 爲什麼我應該使用單獨的測試目標來運行XCTests,我應該怎麼做?
- 3. 爲什麼我應該使用單獨的測試主機來運行XCTests,我應該怎麼做?
- 4. 爲什麼我應該避免使用DbUnit來測試MySQL?
- 5. 我應該測試什麼?
- 6. 我應該爲分類功能做些什麼測試?
- 7. 我應該使用什麼來構建基準測試?
- 8. 爲什麼我們應該使用WSDL4j來開發Web服務?
- 9. 測試GUI代碼:我應該使用模擬庫嗎?
- 10. 爲什麼我們應該在測試中使用setUp和tearDown,而不是直接使用測試方法?
- 11. 爲什麼我們要用`Boy.prototype = new Human;`來模擬繼承?
- 12. 單元測試時我應該使用模擬對象嗎?
- 13. Rails/Devise - 我應該用devise和rspec來測試什麼?
- 14. 我應該用什麼方法來測試VBScript?
- 15. 我應該使用什麼設備來測試iphone應用程序
- 16. 應該測試什麼
- 17. 我應該使用什麼創業板組合來測試我的rails項目?
- 18. 我該如何模擬`instanceof`測試?
- 19. python sys.intern做什麼,它應該在什麼時候使用?
- 20. 爲什麼使用Mbunit和Rhino模擬下列測試失敗?
- 21. 什麼是模擬,什麼時候應該使用它?
- 22. 我應該知道什麼函數來測試php代碼?
- 23. 什麼是Autoconf?爲什麼人們使用它?我應該使用它嗎?
- 24. 我們應該創建包含附加模擬的基礎測試類嗎?
- 25. 爲什麼我應該使用python 3.1而不是python 2.6?
- 26. 我試圖用sql來做什麼?
- 27. 我應該使用什麼對象類型來測試泛型集合?
- 28. 如果我的Rails測試不通過,我應該怎麼做?
- 29. 爲什麼我們使用jvm參數來調試「server = y」?
- 30. 我們應該使用clone還是BeanUtils.copyProperties以及爲什麼
其狀如存根和driver..some其他發展,我們不知道實現存根但我們知道的輸出 –
在你認爲你被要求開發平均功能..但一些身體其他開發添加功能方面容易..所以你只是使用返回的添加來執行你的平均功能 –
我們想測試_our_代碼正常工作;我們不想測試外部資源的內部運作。 –