2017-08-01 3 views
1

Versuchen, eine Referenz der Antwort eines POST-Szenarios mit der PATCH-Methode an ein anderes Szenario zu übergeben und eine der Eigenschaften zu ändern und Fehler zu erhalten. Beim Debuggen des Quellcodes habe ich festgestellt, dass wenn Scripts.assign für ein Szenario aufgerufen wird, der Variablenbereich nicht an das andere Szenario übergeben wird.Das Übergeben einer definierten Variablen durch verschiedene Szenarien funktioniert nicht

  • Karate Version: 0.5.0
  • Java-Version: 1,8

Volle Funktion des Tests:

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'} 

Antwort

0

Das ist von Entwurf - wenn Sie Variablen müssen sein der Bereich für alle Scenario s innerhalb einer Funktion, verschieben Sie es auf die Background. Wenn Sie möchten, dass diese Variable nur einmal initialisiert wird, sehen Sie sich das Schlüsselwort callonce an.

+0

Ich versuche, die Def-Var in den Hintergrund zu verschieben, aber die Zuweisung erfolgt zweimal. Ich versuche, eine Bereichsvariable im Hintergrund zu definieren, aber bei jeder Szenariobewertung wird der Gültigkeitsbereich var reinialisiert. Bei einmaligem Aufruf von def scope var wird dieses Problem gelöst? –

+0

Wie kann ich eine Variable mit Callonce im Hintergrund deklarieren? –

+0

@ViniciusSouza können Sie sich die Karate-Demos ansehen - eines der Beispiele ist für Callonce: https://github.com/intuit/karate/tree/master/karate-demo –

Verwandte Themen