133

ビヘイビア駆動開発を実践するために Python で利用できる最も高度なフレームワークとツールはどれですか? 特に、Ruby 用の rspec や mocha などの同様のツールを見つけることは素晴らしいことです。

4

10 に答える 10

48

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

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

于 2010-05-05T23:20:18.953 に答える
46

私は本当に振る舞うことをお勧めします。

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

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

于 2012-07-18T14:23:39.960 に答える
38

Ian Bicking、ビヘイビア ドリブン デザインにdoctestを使用することを推奨しています。

個人的には、ビヘイビア ドリブン デザイン スタイルで、nosevoidspace モックを使用する傾向があります。具体的には、nose の specプラグインは BDD に優れています。

于 2008-10-24T02:06:21.247 に答える
29

プログラマーがBDDとTDDを実践するのを支援するために開発された一連のツールを使用することをお勧めします。このツールセットは、 pycukesspecloudludibrioshould-dslで構成されています。

should-DSLはあなたにRSpecのような期待を与えるでしょう。RSpec期待化APIでできることはすべて、should-dslでもできます。Githubから最新バージョンを入手できます。

SpecLoudは、BDDのような単体テストの実行に役立ちます。あなたはそれを行うことによってそれをインストールすることができます

pip install specloud

Ludibrioは、テストダブル(モック、スタブ、ダミー)用のライブラリです。経由でインストール

pip install ludibrio

そして、PyCukesはBDDのメインツールです。シナリオなどを実行します。

pip install pycukes

詳細については、PyPiのツールドキュメントをお読みください。

于 2010-06-08T17:20:57.047 に答える
11

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

于 2010-11-12T20:28:16.820 に答える
9

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

于 2012-08-08T07:17:40.633 に答える
8

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

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

于 2009-05-01T18:04:03.830 に答える
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)
于 2012-07-01T03:53:53.927 に答える
6

私はPiccuracyが大好きです。私は最近、中規模のプロジェクトでそれを実装しています。

于 2009-06-02T15:47:25.237 に答える
4

要点を完全に見落としている可能性がありますが、元の BDD の論文で保持していたのは、BDD は、いくつかのベスト プラクティスを強調するためにTDDを再パッケージ化したものであるということでした。

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

編集: 簡単なグーグルで、チーズショップの行動モジュールを見つけました。BDD をさらに検索しても、他に何も見つかりませんでした。

于 2008-10-23T21:19:06.117 に答える