我一直在努力學習Python大約6周。在閱讀了很多有關TDD的網站之後,我購買了單元測試的藝術作者:Roy Osherove(偉大的書!),在嘗試使用TDD的同時學習Python。本書使用.NET,但它似乎不成問題。存根是存根,而嘲諷是嘲笑。試圖學習TDD - 不太好
當我在閱讀,並在網上看到TDD的例子時,我真的覺得我明白爲什麼編碼器會像他們那樣編寫代碼。但是,一旦我坐下來嘗試自己,我就無處可去。
讓我給你從昨天的例子:
我想嘗試TDD對於不那麼複雜的工程。基本上,我想要的是一個類,通過下載和解析RSS提要,保存包含(名稱,日期)的元組列表。我創建了一個新的PY文件爲我的測試中(沒有「真正的代碼」,但寫的),並寫了一個測試案例:
import unittest
from tv_schedule import TvSchedule
class TvScheduleTests(unittest.TestCase):
def test_download_success_and_parse_failure(self):
'''Successfully download RSS schedule for the specific user
but fail parsing it'''
self.tv = TvSchedule("User123")
# Check if ParserException was thrown I guess
if __name__ == "__main__":
unittest.main()
...然後我有點卡住。我想(大聲笑!)。如果這只是愚蠢的和/或我如何能夠做得更好,我真的需要一些指示。我的直覺說我做了一些壞事。
我想讓TvSchedule類在後臺下載/解析(使用feedparser),所以您只需創建一個新的類實例,然後使用它。也許這是不好的設計,也使它很難測試?另外,我將如何消除通過網絡檢索RSS源的依賴性?通過對其進行存根並始終返回包含樣本Feed的內存字符串?
只要我離開TDD教程和書籍喜歡使用的真正簡單的計算器示例,我就會陷入困境。 :(
我認爲在同一時間學習Python *和* TDD可能是一個壞主意。 TDD足夠複雜,無需添加新語言即可獲得這個組合:) –
請注意,「純粹」的TDD只有在您對代碼的去向有好的概念時纔有效。你可能想開始編寫足夠的代碼來確定你的想法,然後爲它寫一個測試(它應該擺脫你沒有解決的任何問題),然後修正你的代碼。 – Marcin
@ kigurai:可能是。我想我會嘗試。有些人似乎認爲在缺乏傳統思維的同時,更容易進入TDD思維模式。 – Rusty