2017-12-04 3 views
1

次の操作を実行しようとしたとき、私は(thisに類似)は、このような状況に実行しています:空手APIテスト - 機能ファイル内のシナリオ全体でのアクセス変数値

Scenario: Create User 
Given path 'user' 
    And request read('user.json'); 
    When method post 
    Then status 200 
    And def user_id = response.userId 

Scenario: Test A 
    Given path 'user/' + user_id <- Received javascript error here 
    ... 

Scenario: Test B 
    Given path 'user/' + user_id <- Received javascript error here 
    ... 

Scenario: Test A 
    Given path 'user/' + user_id <- Received javascript error here 
    ... 

は基本的に私が何をしようとしています何の作成です私のデータベースのユーザーは、まず一連のテストを実行し、最後のシナリオを使用してこのユーザーを削除します。したがって、複数のシナリオでuser_id値を共有する必要があります。私はシナリオごとに新しいユーザーを作成する必要があるため、バックグラウンドは私のためには機能しません。私はデモで、すべてのテストを1つのシナリオに入れることが簡単な方法だと見ましたが、すべてのテストを1つのシナリオに置くことが正しいとは思わない。

私は空手デモを見直しましたが、私の状況に役立つサンプルコードを見つけることができます。私は空手でこれを行う正しい方法を知っていますか?ありがとう。

答えて

0

callonceというキーワードがありません。それを理解し、次にデモを見てください。例えば、callonce.featureです。

「共通」コードを別の機能に移動する必要がありますが、通常は複数の機能ファイルで再利用できるようにするため、これは正しいことです。

+0

callonceは、フィーチャファイル内のシナリオ全体で値を共有するだけですか?他の方法はありますか?私は、空手オブジェクトを介してjs関数を使用して設定し値を取得しようとしましたが、新しいシナリオで取得するとき、設定値はもう存在しません。 – david

+0

@davidは、 'background'セクションで' callonce' **と**を使用します。親切に文書と私が慎重に提供した例を読んでください!ではごきげんよう。 –

+0

こんにちはPeterさん、前回の返信に私がドキュメントを読んだことを忘れて、デモアプリケーションをガイドとして使ってbackgroud + callonceメソッドを試しました。それは私のためにうまくいく。基本的には、1人のユーザーを追加したAddUser.featureファイルを作成し、残りのシナリオでテストするIDを渡しました。 しかし、別のファイルに書き込んで値を渡すのではなく、フィーチャーファイル自体のシナリオとともにテストセットアップとティアダウンコードを含めることが可能かどうかは疑問です。たぶん私は何か正しいことを考えていないでしょうか? – david

関連する問題