Python Koans — это порт Ruby Koans от Edgecase, который можно найти по адресу 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:
SET PYTHON_PATH=C:Python39
Джейк Хебберт создал несколько скринкастов, которые доступны здесь:
https://www.youtube.com/watch?v=e2WXgXEjbHY&list=PL5Up_u-XkWgNcunP_UrTJG_3EXgbK2BQJ&index=1
Или, если вы предпочитаете читать:
Из терминала *nix или командной строки Windows выполните:
.. кодовый блок::sh
python contemplate_koans.py
или:
python3 contemplate_koans.py
В моем случае я использую Python 3 с Windows, поэтому запускаю командную оболочку (cmd.exe) и запускаю это:
Судя по всему, тест не удался:
AssertionError: Ложь не соответствует действительности
Он также сообщает мне, в чем именно проблема: это утверждение в строке 12 файла .\koans\about_asserts.py
. Это легко: просто измените 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
Просто измените один из файлов коанов, и вы увидите, что тесты запускаются автоматически. Сниффер контролируется scent.py
.
Цитируя инструкции Ruby Koans:
«В разработке через тестирование мантрой всегда было: красный, зеленый, рефакторинг. Напишите неудачный тест и запустите его (красный), сделайте так, чтобы тест прошел (зеленый), затем выполните его рефакторинг (то есть посмотрите на код и посмотрите, будет ли он пройден). вы можете сделать его еще лучше). В этом случае вам нужно будет запустить коан и увидеть, что он не пройден (красный), пройти тест (зеленый), затем потратить немного времени и поразмышлять над тестом, чтобы увидеть, чему он вас учит. и улучшить код, чтобы лучше передать его намерения (рефакторинг)».
Существует множество других замечательных проектов Koan для различных языков и фреймворков. Большинство из них можно найти на GitHub. Также на Bitbucket наблюдается небольшая активность коанов.
Переводы всегда приветствуются! Не стесняйтесь добавлять его в этот README, если вам довелось над ним работать:
https://github.com/mswell/python_koans_br
Спасибо Джиму Вейриху и Джо О'Брайену за оригинальные Ruby Koans, на которых основан Python Koans! Кроме того, рубиновые коаны, в свою очередь, заимствованы у метакоанцев, так что спасибо за это Аре Ховарду!
Также спасибо всем, кто внес свой вклад в Python Koans! Я получил отличный старт, взяв на себя управление кодовой базой, инициированной Майками из FPIP. Итак, вот небольшой отрывок из их очень крутого подкаста по Python:
Большое спасибо также Майку Пирнату @pirnat и Кевину Чейзу @kjc, которые в разное время участвовали в сопровождении