Python Koans 是 Edgecase 的“Ruby Koans”的端口,可以在 http://rubykoans.com/ 找到。
Python Koans 是一個互動式教程,用於透過測試通過來學習 Python 程式語言。
大多數測試都是透過填充斷言函數的缺失部分來修復的。例如:
self . assertEqual ( __ , 1 + 2 )
這可以透過用適當的程式碼取代 __ 部分來修復:
self . assertEqual ( 3 , 1 + 2 )
有時您會遇到一些已經填寫但失敗的測試。在這些情況下,您將需要完成一些程式碼的實作才能取得進展。例如,有一個練習可以寫一些程式碼來告訴您三角形是等邊三角形、等腰三角形還是不等邊三角形。
它不僅是學習 Python 的好方法,也是體驗測試驅動開發 (TDD) 的好方法。
Python Koans 可在 GitHub 上取得:
您可以使用 Git 複製或下載 zip/gz/bz2 格式的原始碼。
除了下載或查看最新版本的 Python Koans 之外,您還需要安裝 Python 解釋器。
在撰寫本文時,我們支援 Python 3。
您應該能夠使用較新的 Python 版本,但較舊的版本可能會給您帶來問題。
您可以從這裡下載Python:
安裝 Python 後,請確保包含 python 可執行檔的資料夾位於系統路徑中。換句話說,您需要能夠從命令控制台運行 Python。它將是python3
,或者對於 Windows 它將是python.exe
。
如果您遇到問題,這可能會有所幫助:
Windows 使用者可能還想更新批次檔run.bat
中的行以設定 python 路徑:
設定 PYTHON_PATH=C:Python39
傑克·赫伯特 (Jake Hebbert) 創建了一些截屏視頻,可在此處觀看:
https://www.youtube.com/watch?v=e2WXgXEjbHY&list=PL5Up_u-XkWgNcunP_UrTJG_3EXgbK2BQJ&index=1
或者如果您更喜歡閱讀:
從 *nix 終端機或 Windows 命令提示字元執行:
.. 程式碼區塊:: sh
蟒蛇 contemplate_koans.py
或者:
python3 contemplate_koans.py
就我而言,我在 Windows 中使用 Python 3,因此我啟動命令 shell (cmd.exe) 並執行以下命令:
顯然測試失敗了:
斷言錯誤:False 不是 True
它也準確地告訴我問題出在哪裡,它是.\koans\about_asserts.py
第 12 行的斷言。這個很簡單,只要把False
改成True
就可以測試通過了。
遲早您可能會遇到不確定預期值應該是多少的測試。例如:
class Dog :
pass
def test_objects_are_objects ( self ):
fido = self . Dog ()
self . assertEqual ( __ , isinstance ( fido , object ))
這就是 Python 命令列可以派上用場的地方。在這種情況下,我可以啟動命令列,重新建立場景並執行查詢:
嗅探器可讓您連續執行測試。如果您修改 koans 目錄中的任何文件,它將重新執行測試。
要進行設置,您需要安裝嗅探器:
python3 -m pip install sniffer
您還應該根據您的系統運行這些庫之一。當檔案變更時,這將自動觸發嗅探器,否則嗅探器將不得不輪詢以查看檔案是否已更改。
在 Linux 上:
python3 -m pip install pyinotify
在 Windows 上:
python3 -m pip install pywin32
Also available here:
https://github.com/mhammond/pywin32/releases
在 macOS 上:
python3 -m pip install MacFSEvents
設定完成後,您只需運行:
sniffer
只需修改 koans 檔案之一,您就會看到自動觸發測試。嗅探器由scent.py
控制。
引用 Ruby Koans 的說明:
「在測試驅動開發中,口頭禪一直是,紅、綠、重構。編寫一個失敗的測試並運行它(紅色),使測試通過(綠色),然後重構它(即查看程式碼,看看是否在在這種情況下,您需要運行公案並看到它失敗(紅色),使測試通過(綠色),然後花點時間反思測試,看看它教給您什麼。 (重構)。
還有許多其他針對各種語言和框架的偉大的 Koan 項目。其中大部分都可以在 GitHub 中找到。 Bitbucket 上也有一些公案活動。
隨時歡迎翻譯!如果您碰巧正在使用此自述文件,請隨意添加一個:
https://github.com/mswell/python_koans_br
感謝 Jim Weirich 和 Joe O'Brien 提供了 Python Koans 所基於的原始 Ruby Koans!另外,Ruby Koans 又藉用了 Metakoans,所以也要感謝 Ara Howard!
也感謝所有為 Python Koans 做出貢獻的人!透過接手由 FPIP 的 Mike 共同發起的程式碼庫,我取得了良好的開端。這是他們非常酷的 Python 播客的一個小插件:
非常感謝 Mike Pirnat @pirnat 和 Kevin Chase @kjc 在不同時間作為聯合維護人員參與進來