2016-12-27 1 views
0

Ich habe eine Testmethode innerhalb einer Testklasse, wo ich ein paar Dinge verifizieren will, nur scheitern, nachdem ich in dieser spezifischen Testmethode soft.SoftAssert in Selen Test Klasse

Aber ich fühle meine Testmethode wird unordentlich mit Fehlerbehandlung. Ich konnte dazu keine Best Practices finden. Irgendwelche Ideen? Wenn ich die Behauptungen in die Seitenobjektklasse verschiebe, wird es auch dort etwas unordentlich.

@Test 
public void test() { 

    // steps here 

    // then asserts here 
    SoftAssert soft = new SoftAssert(); 
    String expectedHeaderText = "foo"; 

    soft.assertTrue(pageObjectClass.isHeaderPresent(), "Unable to find the Header page object."); 


    soft.assertTrue(pageObjectClass.getHeader().contains(expectedHeaderText), 
      String.format("Expected to find '%s'. Page actually shows '%s'", expectedHeaderText, pageObjectClass.getHeader())); 

    // more asserts 

    sa.assertAll(); 

} 
+0

Es scheint ziemlich überflüssig zu sein, nach dem Vorhandensein des Headers zu suchen und dann den Text in der Kopfzeile zu überprüfen. Wenn Sie die erste Assertion auslassen und nur nach dem Kopftext suchen, behaupten Sie immer noch dasselbe: Die Kopfzeile ist vorhanden und der Text entspricht Ihren Erwartungen. Keep behauptet in der Testklasse, niemals in der Seitenobjektklasse, da dies keinen Sinn ergibt. Die Seitenobjektklasse sollte nur Selektoren und Getter/Setter und andere seitenbezogene Logik haben, dort sollten keine Assertions durchgeführt werden. – jaredgilmore

Antwort

0

prüfen unten Konvention

@Test 
public void test() { 
// steps here 

// then asserts here 
SoftAssert soft = new SoftAssert(); 
String expectedHeaderText = "foo"; 

Boolean checkHeader=pageObjectClass.isHeaderPresent() //Change the method on POM pageObjectClass such that it returns the true or false 
soft.assertTrue(checkHeader,true); 

String checkHeaderContent=pageObjectClass.getHeader()//change method on POM pageObjectClass to return a string 
soft.assertTrue(checkHeaderContent.contains(expectedHeaderText), String.format("Expected to find '%s'. Page actually shows '%s'", expectedHeaderText, checkHeaderContent)); 
// more asserts 
sa.assertAll(); 

}

+0

Danke für die schnelle Antwort, also wenn ich noch 5 davon in der Testmethode habe, wird es zu repetitiv aussehen? dh, überprüfen Sie die Kopfzeile, dann den Kopftext, dann bewegen Sie sich, um ein anderes Element und seinen Text zu prüfen, wiederholen Sie einige Male. Ich habe überlegt, ob wir in der 'isHeaderPresent' eine wahr/falsch UND eine Fehlermeldung zurückgeben? – user2195411

+0

Ich kann mir viele Möglichkeiten vorstellen, um Ihr Szenario zu implementieren. Ich würde vorschlagen, dass Sie den "expectedHeaderText" an die POM-Methode übergeben, die sowohl die Anwesenheit als auch den Header-Inhalt prüft und basierend auf den Ergebnissen "true/false" zurückgibt! – prithvi394

+0

Wenn ich in der POM-Methode nach Gegenwart und Inhalt suche und true/false zurückgebe, würde ich Fehlermeldungen verlieren, da die Methode wahr/falsch zurückgibt. Sofern ich nicht alle Fehlermeldungen in der Testmethode – user2195411

0

Sie können prüfen, QMetry Automation Framework die assertion and verification Methoden zur Verfügung gestellt. Zum Beispiel:

//verify element present 
firstName.verifyPresent(); 
firstName.assertPresent(); 

//verify Text of Element 
firstName.verifyText("First User"); 
firstName.assertText("First User"); 

//verify Text of element with StringMatchers conditions 
firstName.verifyText(StringMatcher.contains("First User")); 
firstName.assertText(StringMatcher.contains("First User"),"Username Validation"); 

Im Fall der Assert-Methode wird Ihr Test bei Assert-Fehler nicht fortgesetzt.

Bei einer Überprüfungsmethode wird der Test fortgesetzt, auch wenn die Überprüfung fehlgeschlagen ist und der endgültige Status des Tests fehlgeschlagen ist, wenn eine oder mehrere Überprüfungen fehlgeschlagen sind.