GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

gregmalcolm

python_koans – Python Koans – TDDでPythonを学ぶ

投稿日:

Python Koans – TDDでPythonを学ぶ

Python Koans

Python KoansはEdgecaseの “Ruby Koans”のポートで、 http: //rubykoans.com/にあります。

Python Koansは、テストを合格させることによってPythonプログラミング言語を学習するためのインタラクティブなチュートリアルです。

ほとんどのテストは、アサート関数の欠落部分を埋めることで修正されています。 例えば:

self.assertEqual(__、1 + 2)

__部分を適切なコードに置き換えることで修正できます:

self.assertEqual(3、1 + 2)

場合によっては、既に記入されているいくつかの失敗したテストに遭遇することがあります。 このような場合は、コードをいくつか実装して処理を完了する必要があります。 たとえば、三角形が等辺、二等辺三角形またはスカラーであるかどうかを示すコードを書く演習があります。

いくつかのPythonを習得する素晴らしい方法であるだけでなく、Test Driven Development(TDD)の味を得る良い方法です。

Python Koansのダウンロード

Python KoansはGithubのgithubで利用できます:

http://github.com/gregmalcolm/python_koans

Mercurialユーザーのためにbitbucketにもミラーリングされています。

http://bitbucket.org/gregmalcolm/python_koans

いずれのサイトでもソースをzip / gz / bz2としてダウンロードできます。

Pythonコアのインストール

Python Koansの最新バージョンをダウンロードしたりチェックアウトしたりするのとは別に、Pythonインタプリタをインストールする必要があります。

この執筆時点では、Python Koansには2つのバージョンがあります:

  • Python 2.7で使用するためのもの(以前のバージョンはもはやサポートされていません)
  • 1つはPython 3.1以上

新しいPythonのバージョンで作業できるはずですが、古いバージョンでは問題が発生する可能性があります。

Pythonは以下からダウンロードできます:

http://www.python.org/download

Pythonをインストールした後、python実行可能ファイルを含むフォルダがシステムパスにあることを確認してください。 つまり、コマンドコンソールからPythonを実行できる必要があります。 Python 2では、オペレーティングシステムに応じてpythonまたはpython.exeと呼ばれます。 Python 3の場合はpython3か、Windowsの場合はpython.exeになります。

問題がある場合は、次のように役立ちます。

http://www.python.org/about/gettingstarted

Windowsユーザーは、バッチファイルrun.bat内の行を更新して、pythonパスを設定することもできます。

SET PYTHON_PATH=C:\Python27

入門

Jake Hebbertはここでいくつかのスクリーンキャストを作成しました:

http://www.youtube.com/watch?v=e2WXgXEjbHY&list=PL5Up_u-XkWgNcunP_UrTJG_3EXgbK2BQJ&index=1

または、あなたが読むことを好む場合:

* nixターミナルまたはwindowsコマンドプロンプトから、python koans \ python_VERSIONフォルダに移動して実行します。

python contemplate_koans.py

または:

python3 contemplate_koans.py

私の場合、私はWindowsでPython 3を使用しているので、私はコマンドシェル(cmd.exe)を起動し、これを実行します:

明らかにテストは失敗しました:

AssertionError: False is not 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コマンドラインが便利な場所です。 この場合、私はコマンドラインを起動し、シナリオを作り直してクエリを実行することができます:

スニファのサポート

Snifferを使用すると、テストを連続して実行できます。 koansディレクトリ内のファイルを変更すると、テストが再実行されます。

これを設定するには、snifferをインストールする必要があります:

$ pip install sniffer

また、システムに応じてこれらのライブラリの1つを実行する必要があります。 これにより、ファイルが変更されたときに自動的にスニッファがトリガされます。スニファがポーリングされてファイルが変更されたかどうかを確認する必要があります。

Linuxの場合:

$ pip install pyinotify

Windowsの場合:

$ pip install pywin32

(それが失敗した場合は、

$ pip install pypiwin32

Mac OS Xの場合:

$ pip install MacFSEvents

セットアップが完了したら、次のコマンドを実行します:

$ sniffer

koansファイルのいずれかを変更するだけで、テストが自動的に起動されることがわかります。 Snifferはscent.pyによって制御されます

コーンズを最大限に活用する

Ruby Koansの指示を引用する:

"In test-driven development the mantra has always been, red, green,
refactor. Write a failing test and run it (red), make the test pass
(green), then refactor it (that is look at the code and see if you
can make it any better). In this case you will need to run the koan
and see it fail (red), make the test pass (green), then take a
moment and reflect upon the test to see what it is teaching you
and improve the code to better communicate its intent (refactor)."

コンテンツ

Python Koansは、2/3 Ruby Koans移植資料と1/3 Python固有テストで構成されています。 Ruby Koansから移植されたコンテンツには、すべての割り当てプロジェクトが含まれています。

Python 3のコンテンツはPython 2のフレーバとは少し異なりますが、これは2つの異なるバージョンの言語間で大きな変更があるためです。 たとえば、Python 2の変種では、古いスタイルクラスと新しいスタイルクラスの違いが説明されています。 これはPython 3バージョンでの関連性を失いますが、新しい機能をカバーする追加のテストがあります。

Koanプロジェクトをもっと探す

そこには様々な言語やフレームワークのための他の大きなコアンプロジェクトが数多くあります。 それらのほとんどはギブスで見つけることができます。 また、bitbucketには小さなkoansの活動があります。

謝辞

Jim WeirichとJoe O’Brienに、Python Koansが基づいているオリジナルのRuby Koansに感謝します! またRuby KoansもMetakoansから借りてくるので、Ara Howardにも感謝しています!

また、Python Koansに貢献した皆様に感謝します! 私は、FPIPのMikesを組み合わせたコードベースを引き継いで素晴らしいスタートアップを得ました。 ですから、非常にクールなPythonポッドキャスト用の小さなプラグインがあります:

http://frompythonimportpodcast.com/







-gregmalcolm

執筆者: