1

次の Gherking テストは、私のサーバーの 1 つの望ましい動作を定義します。

  Scenario Outline: Calling the server with a valid JSON
     Given A GIS update server
     When I call /update with the json in the file <filename>
     Then the response status code is <status_code>
     And the response is a valid JSON
     And the response JSON contains the key status
     And the response JSON contains the key timestamp
     And the response JSON contains the key validity

  Examples:
  | filename                    | status_code |
  | valid_minimal.json          | 200         |
  | valid_minimal_minified.json | 200         |
  | valid_full.json             | 200         |
  | valid_full_minified.json    | 200         |
  | valid_full_some_nulls.json  | 200         |
  | valid_full_all_nulls.json   | 200         |

Flask サーバーの単体テスト用にこのコードを書きました。Gherkin ディレクティブを解釈するステップ ファイルは、テスト クライアントを開き、必要な呼び出しとアサーションを行います。

@given(u'A GIS update server')
def step_impl(context):
    context.app = application.test_client()

機能ファイルは、単体テストと機能テストで似ています。唯一の違いは、テスト クライアントのメソッドを呼び出すのではなく、HTTP 呼び出しを行う必要があるいくつかのステップ ファイルにあります。

behaveステップ ファイルにパラメーターを渡して、この機能ファイルを再利用する正しい方法は何ですか?

4

2 に答える 2

1

Parva のコメントを拡張して、コマンド ライン経由でパラメーターを送信することをお勧めします。これはステップ定義で検出され、単体テストと機能テストの動作を調整します (明確にするために単体テストと機能テストを分離するかどうかの決定はあなた次第です ;)。

Debug on error に関するBehave ドキュメントに例があります。これは、ステップ メソッドの実行を変更する際に環境属性を使用する良い例を示しています。

# -- FILE: features/environment.py
# USE: BEHAVE_DEBUG_ON_ERROR=yes     (to enable debug-on-error)
from distutils.util import strtobool as _bool
import os

BEHAVE_DEBUG_ON_ERROR = _bool(os.environ.get("BEHAVE_DEBUG_ON_ERROR", "no"))

def after_step(context, step):
    if BEHAVE_DEBUG_ON_ERROR and step.status == "failed":
        # -- ENTER DEBUGGER: Zoom in on failure location.
        # NOTE: Use IPython debugger, same for pdb (basic python debugger).
        import ipdb
        ipdb.post_mortem(step.exc_traceback)

これを変更して、コマンドラインで渡された変数などを検出しUNIT_TESTING、別のエンドポイントにヒットさせたり、テストの代替機能を実行したりできます。

于 2014-05-19T20:23:29.603 に答える
1

必須: 振る舞い >= 1.2.5

テストステージのコンセプトは、あなたのニーズに役立つはずです。これにより、さまざまなテスト ステージにさまざまなステップの実装を使用できます。

behave --stage=functional

変更が軽微な場合は、ユーザーデータの概念を使用して次のようにステップの実装にフラグを渡します。

behave -D test_stage=unit …
behave -D test_stage=functional …
于 2015-02-20T22:58:24.067 に答える