2017-03-28 1 views
0

Ich muss einige Webservices automatisieren, ich erstelle einige Methoden dafür und ich möchte Cucumber dafür verwenden, aber ich kann mir nicht vorstellen, wie man den zurückgegebenen Wert im nächsten Schritt verwendet.Cucumber Java - Wie verwendet man String aus einem Schritt im nächsten Schritt?

Also, ich habe diese Eigenschaft:

Feature: Create Client and place order 

    Scenario: Syntax 
    Given I create client type: "66" 
    And I create for client: "OUTPUTVALUEfromGiven" an account type "123" 
    And I create for client: "OUTPUTVALUEfromGiven" an account type "321" 
    And I want to place order for: "outputvalueFromAnd1" 

und ich habe diese Schritte:

public class CreateClientSteps { 


@Given("^I create client type: \"([^\"]*)\"$") 
public static String iCreateClient(String clientType) { 

    String clientID = ""; 
    System.out.println(clientType); 
    try { 
     clientID = util.createClient(clientType); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return clientID; 

} 

@And("^I create for client: \"([^\"]*)\" an account type \"([^\"]*)\"$") 
public static String createAccount(String clientID, String accountType) { 


    String orderID = ""; 
    try { 
     orderID = util.createAccount(clientID,accountType); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return orderID; 
    } 
} 

Es ist eine Möglichkeit, die zurückgegebenen Werte von Schritt zu verwenden, um zu Schritt?

Vielen Dank!

+0

Laut Cucumber sollte 'a Dann Schritt eine Behauptung verwenden, um das tatsächliche Ergebnis (was das System tatsächlich tut) mit dem erwarteten Ergebnis zu vergleichen. Dein "Dann" -Schritt klingt nicht wie eine Behauptung, du beschreibst noch eine weitere Absicht darin, die ein weiterer "Und" -Schritt ist. –

+0

Sie haben Recht, danke, ich habe gerade den Beitrag bearbeitet. – DET66

+0

Sehen Sie, ob [diese Frage] (http://stackoverflow.com/questions/26422470/good-practice-to-pass-variables-between-cucumber-jvm-steps) Ihnen helfen kann. –

Antwort

1

Freigabe Status zwischen Schritten, so interpretiere ich Ihre Frage, wird nicht durch Prüfung eines zurückgegebenen Wertes getan. Dies geschieht, indem der Wert in einer Instanzvariable gesetzt wird und diese Instanzvariable später in einem anderen Schritt gelesen wird.

würde ich Ihre Schritte dazu, um das zu erreichen ändern:

public class CreateClientSteps { 
    private String clientID; 
    private String orderID; 

    @Given("^I create client type: \"([^\"]*)\"$") 
    public void iCreateClient(String clientType) { 
     System.out.println(clientType); 
     try { 
      clientID = util.createClient(clientType); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

    @And("^I create for client: \"([^\"]*)\" an account type \"([^\"]*)\"$") 
    public void createAccount(String clientID, String accountType) { 
     try { 
      orderID = util.createAccount(clientID, accountType); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

Die Dinge, die ich geändert sind

  • Zwei Felder für den Austausch Zustand - andere Schritte, um die Werte lesen später
  • Nicht statische Methoden - Cucumber erstellt die Schrittklasse für jedes Szenario neu, daher möchte ich nicht, dass die Felder statisch sind, da dies bedeuten würde, dass ihre Werte zwischen den Szenarios
  • verloren gehen würden

So teilen Sie den Status zwischen Schritten derselben Klasse. Das Teilen des Status zwischen Schritten in verschiedenen Klassen kann ebenfalls erfolgen. Es ist ein bisschen komplizierter. Fragen Sie, ob Sie interessiert sind.

+0

Hallo, danke, ich ändere meinen Code mit dem, was Sie mir gesagt haben, und ich benutze die ClientID in Feature-Datei, ich versuche mit "clientType" in Feature: 'Und ich erstelle für Client:" clientType "ein Konto Typ" 123 "' Aber es funktioniert nicht, wie ich den Wert in Feature-Datei verwende :) – DET66

Verwandte Themen