web-dev-qa-db-ja.com

pythonでBDDを練習する

python振る舞い駆動開発を実践するために利用できる最も高度なフレームワークとツールはどれですか?特に、Ruby 。

131
JtR

Ian Bicking 振る舞い駆動の設計には doctest の使用を推奨します。

私は個人的に nosevoidspace mock を振る舞い駆動型のデザインスタイルで使用する傾向があります。特に、鼻の仕様 plugin はBDDに最適です。

37
Ryan

レタスは、Python用のキュウリのようなツールであることを意味します。 http://lettuce.it/

Github.com/gabrielfalcao/lettuceでソースを取得できます

48
user333958

behave をお勧めします。

Python用のCucumberクローンを探して、レタスを使い始めましたが、かなり不器用に設計されたレプリカであることがわかりました。非常に素朴です。

それから私は振る舞いを発見し、それに本当に満足しています。

46
Gregarious

BDDおよびTDDの実践においてプログラマを支援するために開発された一連のツールを使用することをお勧めします。このツールセットは、 pycukesspecloudludibrio および 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 にあるツールのドキュメントをご覧ください。

29
Douglas Camata

素晴らしい投稿と回答。 pycukesが廃止されたため、このリストに Freshen を含めるように更新したかっただけです。 FreshenでのBDDとDjangoの使用に関する良い投稿は here です。

11
Steve

表現力豊かなアサーションに "sure" を使用できます(RSpecと同様)。

9
Gabriel Falcão

Pyccuracyプロジェクトは、PythonのBDDにドメイン固有の言語を提供する取り組みです。

APIレベルで動作するdoctestとは異なり、Webページの読み込みやフォームの送信などの高レベルの操作をエンコードします。私はそれを使用していませんが、それがあなたが探しているものである場合、それはいくらか有望に見えます。

8
Michael Hanson

Pyccuracy が大好きです。最近は中規模のプロジェクトに実装しています。

6

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)
6
mdwhatcott

私はおそらくその点を完全に失っていますが、 元のBDD論文 を維持したのは、BDDがただ [〜#〜] tdd [〜#〜] 強調するために再パッケージされたということでしたいくつかのベストプラクティス。

私の解釈が正しければ、 xUnit 実装でメソッドの名前を変更するだけでBDDフレームワークを取得できます。それでは、標準ライブラリの nittest を使用してください。

編集:クイックグーグルは、 BehaviourCheese Shop のモジュールを見つけました。さらに 検索 BDDについては、他に何も見つかりませんでした。

4
ddaa