2017-08-01 3 views
1

POSTシナリオの応答の参照をPATCHメソッドで別のシナリオに渡し、プロパティの1つを変更してエラーを取得しようとしています。ソースコードをデバッグすると、あるシナリオでScripts.assignが呼び出されたときに、変数スコープが別のシナリオに渡されないことがわかりました。異なるシナリオで定義された変数を渡すことができません

  • 空手のバージョン:0.5.0
  • Javaバージョン:1.8

テストの全機能:

Feature: Products CRUD Test 

Background: 
    * url demoBaseUrl 

Scenario: fetch some products 
    Given path 'products' 
    When method get 
    Then status 200 
    And assert response.size() === 6 

Scenario: add a product 
    Given path 'products' 
    And request {name: 'Iphone 7 Plus 128GB', description: 'Iphone 7 Plus Space Gray 128GB' } 
    When method post 
    Then status 200 
    And match response contains { id: '#number', name: 'Iphone 7 Plus 128GB', description: 'Iphone 7 Plus Space Gray 128GB'} 
    And def newProduct = response 

Scenario: update a product 
    Given path 'products' 
    And def payload = {name: '#(newProduct.name)', description: '#(newProduct.description)'} 
    And set payload $.id = #(newProduct.id) 
    And match payload.id == (newProduct.id) 
    And request payload 
    When method patch 
    Then status 200 
    And match response contains {name: 'New Product Iphone 7'} 

答えて

0

これは仕様です - あなたがする変数が必要な場合フィーチャ内のすべてのScenarioのスコープをBackgroundに移動します。この変数を一度しか初期化しない場合は、callonceというキーワードを見てください。

+0

def varをバックグラウンドに移動しようとしましたが、assignが2回発生します。私はバックグラウンドでスコープ変数を定義しようとしますが、各シナリオ評価でスコープ変数が再定義されます。 def scopeでvarを一度呼び出すと、この問題は解決されますか? –

+0

callonceで変数をバックグラウンドで宣言するにはどうすればよいですか? –

+0

@ViniciusSouzaあなたは空手デモを見ることができます - 例の1つはcallonceです:https://github.com/intuit/karate/tree/master/karate-demo –

関連する問題