ビヘイビア駆動開発を実践するために Python で利用できる最も高度なフレームワークとツールはどれですか? 特に、Ruby 用の rspec や mocha などの同様のツールを見つけることは素晴らしいことです。
10 に答える
レタスは、Python 用のキュウリのようなツールであることを意味します: http://lettuce.it/
github.com/gabrielfalcao/lettuce でソースを取得できます
私は本当に振る舞うことをお勧めします。
Python用のCucumberクローンを探して、レタスを使い始めましたが、かなり不器用に設計されたレプリカであることがわかりました。非常にUnpythonic。
それから私は振る舞いを発見し、それに本当に満足しています。
Ian Bickingは、ビヘイビア ドリブン デザインにdoctestを使用することを推奨しています。
個人的には、ビヘイビア ドリブン デザイン スタイルで、noseとvoidspace モックを使用する傾向があります。具体的には、nose の specプラグインは BDD に優れています。
プログラマーがBDDとTDDを実践するのを支援するために開発された一連のツールを使用することをお勧めします。このツールセットは、 pycukes、specloud、ludibrio、should-dslで構成されています。
should-DSLはあなたにRSpecのような期待を与えるでしょう。RSpec期待化APIでできることはすべて、should-dslでもできます。Githubから最新バージョンを入手できます。
SpecLoudは、BDDのような単体テストの実行に役立ちます。あなたはそれを行うことによってそれをインストールすることができます
pip install specloud
Ludibrioは、テストダブル(モック、スタブ、ダミー)用のライブラリです。経由でインストール
pip install ludibrio
そして、PyCukesはBDDのメインツールです。シナリオなどを実行します。
pip install pycukes
詳細については、PyPiのツールドキュメントをお読みください。
表現力豊かなアサーションに「sure」を使用できます(RSpec と同様)。
Pyccuracyプロジェクトは、PythonでBDDにドメイン固有言語を提供するための取り組みです。
APIレベルで機能するdoctestとは異なり、Webページの読み込みやフォームの送信などの高レベルの操作をエンコードします。私はそれを使用していませんが、それがあなたが探しているものであるならば、それは幾分有望に見えます。
pyspecsを試してください。テストを読みやすくし、開発中に常に実行することは、このプロジェクトを作成する際の私の 2 つの主な目標でした。
テストコード:
from pyspecs import given, when, then, and_, the, this
with given.two_operands:
a = 2
b = 3
with when.supplied_to_the_add_function:
total = a + b
with then.the_total_should_be_mathmatically_correct:
the(total).should.equal(5)
with and_.the_total_should_be_greater_than_either_operand:
the(total).should.be_greater_than(a)
the(total).should.be_greater_than(b)
with when.supplied_to_the_subtract_function:
difference = b - a
with then.the_difference_should_be_mathmatically_correct:
the(difference).should.equal(1)
コンソール出力:
# run_pyspecs.py
| • given two operands
| • when supplied to the add function
| • then the total should be mathmatically correct
| • and the total should be greater than either operand
| • when supplied to the subtract function
| • then the difference should be mathmatically correct
(ok) 6 passed (6 steps, 1 scenarios in 0.0002 seconds)
私はPiccuracyが大好きです。私は最近、中規模のプロジェクトでそれを実装しています。
要点を完全に見落としている可能性がありますが、元の BDD の論文で保持していたのは、BDD は、いくつかのベスト プラクティスを強調するためにTDDを再パッケージ化したものであるということでした。
私の解釈が正しければ、任意のxUnit実装でメソッドの名前を変更するだけで、BDD フレームワークを取得できます。それでは、標準ライブラリのunittestを使用してください。
編集: 簡単なグーグルで、チーズショップの行動モジュールを見つけました。BDD をさらに検索しても、他に何も見つかりませんでした。