Ogórek - zarys scenariusza
Scenario outlinew zasadzie zastępuje zmienne / słowa kluczowe wartością z tabeli. Każdy wiersz w tabeli jest uważany za scenariusz.
Kontynuujmy ten sam przykład funkcji logowania na Facebooku. Do tej pory realizowaliśmy jeden scenariusz: Po podaniu poprawnej nazwy użytkownika logowanie przebiega pomyślnie. Teraz załóżmy, że chcemy sprawdzić, czy logowanie powiodło się dla wszystkich trzech możliwych typów danych wejściowych, którymi są nazwa użytkownika, adres e-mail lub numer telefonu. Aby to osiągnąć, będziemy musieli napisać trzy różne scenariusze, w których każdy scenariusz będzie się różnić w zależności od rodzaju danych wejściowych, logowanie się powiedzie. W takim przypadku scenariusze będą wyglądać następująco.
Scenario:
Podany użytkownik przechodzi do Facebooka
Kiedy wprowadzam poprawną nazwę użytkownika i hasło
Następnie logowanie powinno przebiegać pomyślnie
Scenario:
Podany użytkownik przechodzi do Facebooka
Kiedy podaję poprawny adres e-mail i hasło
Następnie logowanie powinno przebiegać pomyślnie
Scenario:
Podany użytkownik przechodzi do Facebooka
Kiedy podam poprawny numer telefonu i hasło
Następnie logowanie powinno przebiegać pomyślnie
Tutaj, jeśli przyjrzymy się uważnie, dla powyższych trzech scenariuszy: instrukcje są takie same, zmienia się tylko parametr wejściowy (nazwa użytkownika / adres e-mail / numer telefonu). W tym miejscu pojawia się znaczenie zarysów scenariusza.
Kiedy definiujemy dowolny scenariusz z zarysem scenariusza, możemy określić jeden scenariusz testowy, a na dole możemy podać kilka danych wejściowych. Scenariusz zostanie wykonany tyle razy, ile podanych danych wejściowych.
Przykład
Stwórzmy przykładowy zarys scenariusza -
Step 1 - Utwórz projekt testowy Maven o nazwie jako ScenarioOutlineTest
Idź do Plik → Nowy → Inne → Maven → Projekt Maven → Dalej.
Podaj identyfikator grupy (identyfikator grupy będzie jednoznacznie identyfikował Twój projekt we wszystkich projektach).
Podaj identyfikator artefaktu (identyfikator artefaktu to nazwa słoika bez wersji. Możesz wybrać dowolną nazwę zapisaną małymi literami).
Kliknij Zakończ.
otwarty pom.xml -
Przejdź do eksploratora pakietów po lewej stronie Eclipse.
Rozwiń projekt CucumberTest.
Zlokalizuj plik pom.xml.
Kliknij prawym przyciskiem myszy i wybierz opcję Otwórz za pomocą „Edytora tekstu”.
Dodaj zależność dla Selenium - to wskaże Maven, które pliki jar Selenium mają zostać pobrane z centralnego repozytorium do lokalnego repozytorium.
Otwórz pom.xml jest w trybie edycji, utwórz tag zależności (<dependencies> </dependencies>) wewnątrz tagu projektu.
Wewnątrz tagu zależności utwórz tag zależności (<dependency> </dependency>).
Podaj następujące informacje w tagu zależności.
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.47.1</version>
</dependency>
Dodaj zależność dla Cucumber-Java: wskaże Maven, które pliki Cucumber mają zostać pobrane z centralnego repozytorium do lokalnego repozytorium.
Utwórz jeszcze jeden tag zależności.
Podaj następujące informacje w tagu zależności.
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
Dodaj zależność dla Cucumber-JUnit: To wskaże Maven, które pliki Cucumber JUnit mają zostać pobrane z centralnego repozytorium do lokalnego repozytorium.
Utwórz jeszcze jeden tag zależności.
Podaj następujące informacje w tagu zależności.
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
Dodaj zależność dla JUnit - wskaże Maven, które pliki JUnit mają zostać pobrane z repozytorium centralnego do repozytorium lokalnego.
Utwórz jeszcze jeden tag zależności.
Podaj następujące informacje w tagu zależności.
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
Dodaj zależność dla JUnit - wskaże Maven, które pliki JUnit mają zostać pobrane z repozytorium centralnego do repozytorium lokalnego.
Utwórz jeszcze jeden tag zależności.
Podaj następujące informacje w tagu zależności.
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
Sprawdź pliki binarne.
Po pomyślnej edycji pom.xml zapisz go.
Idź do Project → Clean - zajmie to kilka minut.
Step 2 - Utwórz pakiet o nazwie „zarys” pod src/test/java
Step 3 - Utwórz plik funkcji o nazwie “outline.feature”
Wybierz i kliknij prawym przyciskiem myszy kontur paczki.
Kliknij plik „Nowy”.
Podaj nazwę pliku, taką jak “outline.feature”
Wpisz następujący tekst w pliku i zapisz go.
Feature - Zarys scenariusza
Scenario Outline - Funkcja logowania do serwisu społecznościowego.
Podany użytkownik przechodzi do Facebooka
Kiedy wpiszę nazwę użytkownika jako „<nazwa użytkownika>” i hasło jako „<hasło>”
Wtedy logowanie powinno zakończyć się niepowodzeniem
Example -
| username | password |
| username1 | password1 |
| username2 | password2 |
Note- Tutaj przykładowa adnotacja opisuje zakres danych wejściowych, które mają być dostarczone podczas wykonywania scenariusza. Scenariusz testowy zostanie wykonany dla każdego z podanych danych wejściowych. Tak więc w podanym przykładzie scenariusz testowy zostanie wykonany trzykrotnie.
Step 4 - Utwórz plik definicji kroku.
Wybierz i kliknij prawym przyciskiem myszy kontur paczki.
Kliknij plik „Nowy”.
Podaj nazwę pliku jako stepdefinition.java
Wpisz następujący tekst w pliku i zapisz go.
package Outline;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import cucumber.annotation.en.Given;
import cucumber.annotation.en.Then;
import cucumber.annotation.en.When;
public class stepdefinition {
WebDriver driver = null;
@Given("^user navigates to facebook$")
public void goToFacebook() {
driver = new FirefoxDriver();
driver.navigate().to("https://www.facebook.com/");
}
@When("^I enter Username as \"([^\"]*)\" and Password as \"([^\"]*)\"$")
public void I_enter_Username_as_and_Password_as(String arg1, String arg2) {
driver.findElement(By.id("email")).sendKeys(arg1);
driver.findElement(By.id("pass")).sendKeys(arg2);
driver.findElement(By.id("u_0_v")).click();
}
@Then("^login should be unsuccessful$")
public void validateRelogin() {
if(driver.getCurrentUrl().equalsIgnoreCase(
"https://www.facebook.com/login.php?login_attempt=1&lwv=110")){
System.out.println("Test Pass");
} else {
System.out.println("Test Failed");
}
driver.close();
}
}
Note- W powyższym kodzie musimy zdefiniować funkcję mającą dwa argumenty wejściowe: jedna nazwa użytkownika, a druga będzie dla hasła. Tak więc dla każdego zestawu danych wejściowych podanych w przykładowym znaczniku, zostanie wykonany zestaw GIVEN, WHEN i THEN.
Step 5 - Utwórz plik klasy biegacza.
Wybierz i kliknij prawym przyciskiem myszy kontur paczki.
Kliknij plik „Nowy”.
Podaj nazwę pliku, taką jak runTest.java
Wpisz następujący tekst w pliku i zapisz go.
package Outline;
import org.junit.runner.RunWith;
import cucumber.junit.Cucumber;
@RunWith(Cucumber.class)
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})
public class runTest { }
Uruchom test za pomocą opcji -
Wybierz runTest.java plik z eksploratora pakietów.
Kliknij prawym przyciskiem myszy i wybierz opcję ‘Run as’.
Wybierz test JUnit.
Po uruchomieniu tego pliku klasy zaobserwujesz następujące rzeczy
Facebook otwiera się w nowej instancji przeglądarki internetowej Firefox.
Nazwa użytkownika1 i hasło1 zostaną przekazane jako dane wejściowe w polu nazwy użytkownika i hasła.
Login zostanie kliknięty.
W przeglądarce wyświetli się komunikat o nieudanym logowaniu.
W konsoli zostanie wydrukowany napis „Test Pass”.
Wyniki kroków od 1 do 5 zostaną ponownie wykonane dla nazwy użytkownika2 i hasła2.
W skrócie, gdy scenariusz się nie zmienia, ale zmienia się tylko wartość danych, zaleca się użycie tabel danych zarysu scenariusza.