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 在不同时间作为联合维护人员参与进来