Ogórek - Krótki przewodnik

Aby uzyskać lepsze korzyści z testowania oprogramowania, organizacje robią obecnie krok naprzód. Wdrażają ważne scenariusze testów akceptacyjnych, podczas gdy rozwój jest w toku. To podejście jest powszechnie znane jakoBehavior Driven Development (BDD).

Behavior Driven Development daje nam możliwość tworzenia skryptów testowych zarówno z perspektywy dewelopera, jak i klienta. Tak więc na początku programiści, kierownicy projektów, QA, testerzy akceptacji użytkowników i właściciel produktu (akcjonariusz) zbierają się razem i zastanawiają, które scenariusze testowe należy przejść, aby oprogramowanie / aplikacja zakończyło się sukcesem. W ten sposób opracowują zestaw scenariuszy testowych. Wszystkie te skrypty testowe są w prostym języku angielskim, więc służy również do celów dokumentacji.

Przykład

Jeśli opracowujemy funkcję uwierzytelniania użytkownika, poniżej może być kilka kluczowych scenariuszy testowych, które muszą zostać zaliczone, aby można było nazwać to sukcesem.

  • Użytkownik powinien być w stanie zalogować się przy użyciu poprawnej nazwy użytkownika i prawidłowego hasła.

  • Użytkownik nie powinien mieć możliwości zalogowania się przy użyciu nieprawidłowej nazwy użytkownika i prawidłowego hasła.

  • Użytkownik nie powinien mieć możliwości zalogowania się przy użyciu poprawnej nazwy użytkownika i nieprawidłowego hasła.

Jak to działa

Do czasu, gdy kod jest gotowy, gotowe są również skrypty testowe. Kod musi przejść testy skrypty zdefiniowane w BDD. Jeśli tak się nie stanie, konieczna będzie refaktoryzacja kodu. Kod zostaje zawieszony dopiero po pomyślnym wykonaniu zdefiniowanych skryptów testowych.

To bardzo proste pojęcie, ale potrzebujemy tego, aby ta koncepcja została wdrożona. Odpowiedź brzmi: Behavior Driven Development Framework (BDD). Jednym z takich narzędzi open source jest Cucumber, które wspiera rozwój oparty na zachowaniu. Mówiąc dokładniej, Cucumber można zdefiniować jako platformę testową opartą na prostym angielskim tekście. Służy jako dokumentacja, testy automatyczne i pomoc rozwojowa - wszystko w jednym.

Więc co robi ogórek? Można to opisać w następujących krokach -

Cucumber czyta kod napisany zwykłym angielskim tekstem (Language Gherkin - do wprowadzenia w dalszej części tego samouczka) w pliku funkcji (do wprowadzenia później).

Znajduje dokładne dopasowanie każdego kroku w definicji kroku (plik kodu - szczegóły podane w dalszej części samouczka).

Fragment kodu do wykonania mogą być różnymi strukturami oprogramowania, takimi jak Selenium, Ruby on Railsitp. Nie każde narzędzie frameworkowe BDD obsługuje każde narzędzie.

Stało się to przyczyną popularności Cucumber w porównaniu z innymi frameworkami, takimi jak JBehave, JDave, Easyb, itp.

Cucumber obsługuje kilkanaście różnych platform oprogramowania, takich jak -

  • Ruby on Rails
  • Selenium
  • PicoContainer
  • Spring Framework
  • Watir

Zalety ogórka w porównaniu z innymi narzędziami

  • Cucumber obsługuje różne języki, takie jak Java.net i Ruby.

  • Działa jako pomost między językiem biznesowym a technicznym. Możemy to osiągnąć, tworząc przypadek testowy w postaci zwykłego tekstu w języku angielskim.

  • Pozwala na napisanie skryptu testowego bez znajomości jakiegokolwiek kodu, pozwala również na zaangażowanie nie-programistów.

  • W przeciwieństwie do innych narzędzi służy on do kompleksowego środowiska testowego.

  • Dzięki prostej architekturze skryptów testowych Cucumber zapewnia możliwość ponownego wykorzystania kodu.

W tym rozdziale zobaczymy konfigurację środowiska dla Cucumber z Selenium WebDriver i Javą na komputerze z systemem Windows.

Wymagania wstępne dotyczące konfiguracji środowiska

Poniżej przedstawiono wymagania wstępne wymagane do skonfigurowania z -

Jawa

Why we need- Java to solidny język programowania. Cucumber obsługuje platformę Java do wykonania.

How to install -

Step 1 - Pobierz jdk i jre z poniższego linku http://www.oracle.com/technetwork/java/javase/downloads/index.html

Step 2 - Zaakceptuj umowę licencyjną.

Step 3 - Zainstaluj JDK i JRE.

Step 4 - Ustaw zmienną środowiskową, jak pokazano na poniższych zrzutach ekranu.

Zaćmienie

Why we need- Eclipse to zintegrowane środowisko programistyczne (IDE). Zawiera podstawowy obszar roboczy i rozszerzalny system wtyczek do dostosowywania środowiska.

How to install -

Step 1 - Upewnij się, że JAVA jest zainstalowana na komputerze.

Step 2 - Pobierz Eclipse z https://eclipse.org/downloads/

Step 3 - Rozpakuj i Eclipse jest zainstalowane.

Maven

Why we need- Maven to narzędzie do automatyzacji kompilacji używane głównie w projektach Java. Zapewnia wspólną platformę do wykonywania czynności, takich jak generowanie kodu źródłowego, kompilowanie kodu, pakowanie kodu do słoika itp. Później, jeśli któraś z wersji oprogramowania zostanie zmieniona, Maven zapewnia łatwy sposób na odpowiednią modyfikację projektu testowego.

How to install -

Step 1 - Pobierz Maven z poniższego linku - https://maven.apache.org/download.cgi

Step 2 - Rozpakuj plik i zapamiętaj lokalizację.

Step 3 - Utwórz zmienną środowiskową MAVEN_HOME, jak pokazano na poniższym zrzucie ekranu.

Step 4 - Edytuj zmienną Path i dołącz Maven, jak pokazano na poniższym zrzucie ekranu.

Step 5 - Pobierz wtyczkę MAVEN z Eclipse.

Step 6 - Otwórz Eclipse.

Step 7 - Przejdź do Help → Eclipse Marketplace → Search Maven → Maven Integration for Eclipse → INSTALL.

Skonfiguruj Cucumber z Mavenem

Step 1 - Utwórz projekt Maven.

  • 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.

Step 2 - Otwórz pom.xml.

  • Przejdź do eksploratora pakietów po lewej stronie Eclipse.

  • Rozwiń projekt CucumberTest.

  • Znajdź pom.xml plik.

  • Kliknij prawym przyciskiem myszy i wybierz opcję, otwórz za pomocą „Edytora tekstu”.

Step 3 - Dodaj zależność dla selenu: wskaże Mavenowi, które pliki jar selenu mają zostać pobrane z centralnego repozytorium do repozytorium lokalnego.

  • otwarty 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>

Step 4 - 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>

Step 5 - Dodaj zależność dla Cucumber-JUnit: 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>

Step 6 - Dodaj zależność dla JUnit: To wskaże Maven, które pliki 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>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>

Step 7 - Sprawdź pliki binarne.

  • Pewnego razu pom.xml został pomyślnie edytowany, zapisz go.

  • Przejdź do projektu → Wyczyść - zajmie to kilka minut.

Będziesz mógł zobaczyć repozytorium Maven, jak pokazano na poniższym zrzucie ekranu.

  • Utwórz plik elementu (do omówienia później).

  • Utwórz plik definicji kroku (do omówienia później).

  • Utwórz JUnit runner, aby uruchomić test (do omówienia później).

Do tej pory rozumiemy, czym jest ogórek i co robi. Wykonuje skrypty testowe, które zostały zdefiniowane w pliku funkcji (które zostaną omówione w kolejnych rozdziałach). Język, w którym zapisywane są te wykonywalne pliki funkcji, jest znany jakoGherkin. Gherkin to zwykły angielski język tekstowy, który pomaga narzędziu - Cucumberowi interpretować i wykonywać skrypty testowe.

Można by pomyśleć, że wielokrotnie dyskutowano, że Cucumber obsługuje prosty tekst w języku angielskim, więc dlaczego potrzebujemy oddzielnego języka - korniszona. Odpowiedź tkwi w koncepcji rozwoju opartego na zachowaniu.

Jak wspomniano wcześniej, widzieliśmy, że BDD uwzględnia różne perspektywy podczas tworzenia skryptów testowych. Może to być perspektywa rozwojowa, biznesowa itp. To powiedziawszy, będziemy potrzebować ludzi z różnych społeczności, takich jak programiści, kierownicy projektów, właściciele produktów i testerzy podczas tworzenia skryptów testowych. Ponieważ osoby te nie należą do tej samej kategorii, istnieje ryzyko, że nie będą używać wspólnego języka do konceptualizacji skryptów testowych. To był punkt ewolucji dla korniszonów.

Gherkin zapewnia wspólny zestaw słów kluczowych w tekście angielskim, których mogą używać ludzie z różnych społeczności, a mimo to uzyskują te same wyniki w postaci skryptów testowych.

Przykład

Feature - Funkcja logowania do serwisu społecznościowego. Given Jestem użytkownikiem serwisu społecznościowego. When Wpisuję nazwę użytkownika jako nazwę użytkownika1. And Jako hasło wpisuję hasło 1. Then Powinienem zostać przekierowany na stronę główną serwisu.

W powyższym scenariuszu występuje funkcja zwana logowaniem użytkownika. Wszystkie słowa wyróżnione pogrubioną czcionką są słowami kluczowymi Gherkin.

Przykład kilku innych słów kluczowych -

  • Background
  • But
  • *
  • Zarys scenariusza
  • Examples

Gherkin przeanalizuje każdy krok zapisany w pliku definicji kroku (do omówienia później). Zatem kroki wymienione w pliku funkcji i pliku definicji kroku (do omówienia później) powinny być zgodne.

Jars Gherkin można zlokalizować w folderze Maven Dependency w Eksploratorze pakietów. Jest pobierany wraz z innymi słoikami z ogórkami. Będzie wyglądać jak na poniższym zrzucie ekranu -

Innym interesującym faktem dotyczącym korniszona jest to, że obsługuje nie tylko angielski, ale wiele innych języków ojczystych, takich jak francuski, fiński, indonezyjski, węgierski, hindi, urdu, gudżarati itp.

ZA Featuremożna zdefiniować jako samodzielną jednostkę lub funkcję projektu. Spójrzmy na bardzo powszechny przykład serwisu społecznościowego. Jak wygląda cecha tego produktu / projektu? Niewiele podstawowych cech można określić jako -

  • Utwórz i usuń użytkownika z serwisu społecznościowego.

  • Funkcja logowania użytkownika do serwisu społecznościowego.

  • Udostępnianie zdjęć lub filmów w serwisie społecznościowym.

  • Wysyłanie zaproszenia do znajomych.

  • Logout.

Do tej pory jest jasne, że każdą niezależną funkcjonalność testowanego produktu można określić jako funkcję, gdy mówimy o ogórku. Najlepszym rozwiązaniem jest późniejsze rozpoczęcie testowania, aby przed wyprowadzeniem skryptów testowych określić, jakie funkcje mają być testowane.

Funkcja zwykle zawiera listę scenariuszy do przetestowania pod kątem tej funkcji. Plik, w którym przechowujemy funkcje, opis funkcji i scenariuszy do przetestowania, jest znany jakoFeature File. Więcej o plikach funkcji dowiemy się w następnym rozdziale.

Słowo kluczowe reprezentujące testowaną funkcję w Korniszonach to „Funkcja”. Sugerowaną najlepszą praktyką jest napisanie krótkiego opisu funkcji pod tytułem funkcji w pliku funkcji. Spełni to również potrzebę dobrej dokumentacji.

Przykład

Feature - Funkcja logowania do serwisu społecznościowego.

Użytkownik powinien mieć możliwość zalogowania się do serwisu społecznościowego, jeśli nazwa użytkownika i hasło są poprawne.

Użytkownik powinien otrzymać komunikat o błędzie, jeśli nazwa użytkownika i hasło są nieprawidłowe.

Użytkownik powinien przejść do strony głównej, jeśli nazwa użytkownika i hasło są poprawne.

Pliki funkcji

Plik, w którym zapisywane są testy Cucumber, jest znany jako feature files. Zaleca się, aby istniał oddzielny plik funkcji dla każdej testowanej funkcji. Plik funkcji musi mieć rozszerzenie „.feature”.

Można utworzyć dowolną liczbę plików funkcji. Aby mieć zorganizowaną strukturę, każdy element powinien mieć jeden plik funkcji.

Na przykład -

Sr.No Funkcja Nazwa pliku funkcji
1 Login użytkownika userLogin.feature
2 Udostępnij post sharePost.feature
3 Utwórz konto createAccount.feature
4 Usuń konto deleteAccount.feature

Konwencja nazewnictwa, która ma być używana dla nazwy funkcji, nazwa pliku funkcji zależy od indywidualnego wyboru. W Cucumber nie ma podstawowej zasady dotyczącej nazw.

Prosty plik funkcji składa się z następujących słów kluczowych / części -

  • Feature - nazwa testowanej funkcji.

  • Description (opcjonalnie) - opisz testowaną funkcję.

  • Scenario - Jaki jest scenariusz testowy.

  • Given - Warunek wstępny przed wykonaniem kroków testu.

  • When - Określony warunek, który powinien spełnić, aby wykonać następny krok.

  • Then - Co się stanie, jeśli warunek wymieniony w KIEDY zostanie spełniony

Przykład

Feature - Logowanie użytkownika w serwisie społecznościowym.

Użytkownik powinien mieć możliwość zalogowania się do serwisu społecznościowego, gdy nazwa użytkownika i hasło są poprawne.

Użytkownik powinien otrzymać komunikat o błędzie, gdy nazwa użytkownika i hasło są nieprawidłowe.

Użytkownik powinien przejść do strony głównej, jeśli nazwa użytkownika i hasło są poprawne.

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>”. Następnie logowanie powinno zakończyć się niepowodzeniem.

| username  | password  |
| username1 | password1 |

* AND słowo kluczowe służy do pokazania połączenia między dwoma warunkami. AND może być używany z dowolnymi innymi słowami kluczowymi, takimi jak GIVEN, WHEN i THEN.

W pliku funkcji nie ma żadnych szczegółów logicznych.

Definicje kroków

Mamy gotowy plik funkcji ze zdefiniowanymi scenariuszami testowymi. Jednak to nie jest cała wykonana praca. Cucumber tak naprawdę nie wie, który fragment kodu ma zostać wykonany dla konkretnego scenariusza opisanego w pliku funkcji.

Wywołuje to potrzebę pośredniego pliku definicji kroku. Plik definicji kroków przechowuje odwzorowanie między każdym krokiem scenariusza zdefiniowanym w pliku funkcji z kodem funkcji do wykonania.

Tak więc teraz, gdy Cucumber wykonuje krok scenariusza wspomnianego w pliku funkcji, skanuje plik definicji kroku i ustala, która funkcja ma zostać wywołana.

Przykład pliku definicji kroku

public void goToFacebook() { 
   driver = new FirefoxDriver(); 
   driver.navigate().to("https://www.facebook.com/"); 
} 
@When "^user logs in using 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(); 
}

Tak więc z każdą funkcją, jakimkolwiek kodem, który chcesz wykonać z każdym krokiem testu (tj. GIVEN / THEN / WHEN), możesz zapisać go w pliku definicji kroku. Upewnij się, że dla każdego kroku zdefiniowano kod / funkcję.

Tą funkcją mogą być funkcje Java, w których możemy używać poleceń Java i Selenium w celu zautomatyzowania naszych kroków testowych.

Scenariojest jedną z podstawowych struktur Gherkin. Każdy scenariusz zaczyna się od słowa kluczowego „Scenariusz:” (lub zlokalizowanego), po którym następuje opcjonalny tytuł scenariusza. Każda funkcja może mieć jeden lub więcej scenariuszy, a każdy scenariusz składa się z co najmniej jednego kroku. Bardzo prostym przykładem scenariusza może być -

Scenario - Sprawdź funkcjonalność pomocy.

Podany użytkownik przechodzi do Facebooka.

Gdy użytkownik kliknie Pomoc, otworzy się strona Pomoc.

Rozważmy przypadek, w którym musimy wykonać scenariusz testowy więcej niż raz. Załóżmy, że musimy się upewnić, że funkcja logowania działa dla wszystkich typów posiadaczy subskrypcji. Wymaga to wielokrotnego wykonywania scenariusza funkcji logowania. Kopiuj, wklej te same kroki, aby ponownie wykonać kod, nie wydaje się być dobrym pomysłem. W tym celu Gherkin zapewnia jeszcze jedną strukturę, którą jest zarys scenariusza.

Zarys scenariusza jest podobny do struktury scenariusza; jedyną różnicą jest zapewnienie wielu nakładów. Jak widać w poniższym przykładzie, przypadek testowy pozostaje taki sam i nie jest powtarzalny. U dołu podaliśmy wiele wartości wejściowych dla zmiennych „Nazwa użytkownika” i „Hasło”. Podczas wykonywania rzeczywistego testu Cucumber zastąpi zmienną podanymi wartościami wejściowymi i wykona test. Gdy przebieg 1 zostanie wykonany, test zostanie uruchomiony ponownie na drugą iterację z inną wartością wejściową. Taka zmienna lub symbole zastępcze mogą być reprezentowane za pomocą „<>” podczas wzmianki w instrukcjach korniszona.

Przykład

Scenario Outline- Funkcja logowania do serwisu społecznościowego. Podany użytkownik przechodzi do Facebooka.

Gdy użytkownik loguje się przy użyciu nazwy użytkownika jako „<nazwa użytkownika>” i hasła jako „<hasło>”, logowanie powinno przebiegać pomyślnie.

| username | password  | 
| user1    | password1 | 
| user2    | password2 |

Istnieje kilka wskazówek i sztuczek, które sprytnie zdefiniują scenariusze dotyczące ogórków.

  • Każdy krok powinien być jasno zdefiniowany, aby nie powodował zamieszania dla czytelnika.

  • Nie powtarzaj scenariusza testowego, w razie potrzeby użyj schematu scenariusza, aby wdrożyć powtórzenie.

  • Opracuj krok testowy w taki sposób, aby można go było używać w wielu scenariuszach i zarysach scenariuszy.

  • O ile to możliwe, utrzymuj każdy krok całkowicie niezależnie. Na przykład: „Biorąc pod uwagę, że użytkownik jest zalogowany”. Można to podzielić na dwa etapy

    • Podany użytkownik wprowadza nazwę użytkownika.
    • Klika logowanie.

Annotationto predefiniowany tekst, który ma określone znaczenie. Pozwala kompilatorowi / interpreterowi wiedzieć, co należy zrobić po wykonaniu. Ogórek ma kilka następujących adnotacji -

  • Given -

    • Opisuje warunki wstępne wykonania testu.

    • Przykład - PODANE Jestem użytkownikiem Facebooka

  • When -

    • Definiuje punkt wyzwalania dla wykonania dowolnego scenariusza testowego.

    • Przykład - GDY wpisuję „<nazwa użytkownika>”

  • Then -

    • Następnie przechowuje oczekiwany wynik testu do wykonania.

    • Przykład - WTEDY logowanie powinno przebiegać pomyślnie.

  • And -

    • Zapewnia warunek logiczny AND między dowolnymi dwoma instrukcjami. AND może być używany w połączeniu z instrukcjami GIVEN, WHEN i THEN.

    • Przykład - KIEDY wpisuję „<nazwa użytkownika>” ORAZ „<hasło>”

  • But -

    • Oznacza logiczny warunek LUB między dowolnymi dwoma instrukcjami. LUB może być używane w połączeniu z instrukcjami GIVEN, WHEN i THEN.

    • Przykład - WTEDY logowanie powinno przebiegać pomyślnie. ALE nie powinno zabraknąć strony głównej.

  • Scenario -

    • Szczegóły dotyczące testowanego scenariusza należy przechwycić po słowie kluczowym „Scenariusz:”

    • Przykład -

      Scenariusz:

      DANE Jestem użytkownikiem Facebooka

      KIEDY wejdę do mojego

      I wchodzę do mojego

      NASTĘPNIE logowanie powinno przebiegać pomyślnie.

      ALE nie powinno zabraknąć strony głównej.

  • Scenario Outline - (do omówienia później)

  • Examples - (do omówienia później)

  • Background -

    • Tło generalnie zawiera instrukcje dotyczące konfiguracji przed uruchomieniem każdego scenariusza. Jednak jest wykonywany po przechwyceniu „Przed” (do omówienia później). Jest to więc idealne rozwiązanie do użycia w kodzie, gdy chcemy skonfigurować przeglądarkę internetową lub chcemy nawiązać połączenie z bazą danych.

      • Przykład -

        Tło:

        Przejdź do strony głównej Facebooka.

Przykładowy scenariusz

Zautomatyzujmy scenariusz, aby lepiej zrozumieć adnotacje.

Step 1

Utwórz projekt testowy Maven o nazwie jako AnnotationTest.

  • 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 AnnotationTest.

    • 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 - To wskaże Maven, które pliki 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>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • Sprawdź pliki binarne.

    • Po pomyślnej edycji pom.xml zapisz go.

    • Przejdź do projektu → Wyczyść - zajmie to kilka minut.

Step 2

Utwórz pakiet o nazwie Annotation under src/test/java

  • Wybierz nowo utworzony projekt.

  • Kliknij prawym przyciskiem myszy i wybierz „Nowy”.

  • Wybierz opcję „Pakiet”.

  • Nazwij go „Adnotacją”.

  • Zapisz to.

Step 3

Utwórz plik elementu o nazwie annotation.feature.

  • Wybierz i kliknij prawym przyciskiem myszy kontur paczki.

  • Kliknij plik „Nowy”.

  • Nadaj plikowi nazwę, taką jak outline.feature.

  • Wpisz następujący tekst w pliku i zapisz go.

Feature: annotation 
#This is how background can be used to eliminate duplicate steps 

Background: 
   User navigates to Facebook Given 
   I am on Facebook login page 

#Scenario with AND 
Scenario: 
   When I enter username as "TOM"
   And I enter password as "JERRY" 
   Then Login should fail 

#Scenario with BUT 
Scenario: 
   When I enter username as "TOM" 
   And I enter password as "JERRY" 
   Then Login should fail 
   But Relogin option should be available

Step 4

Utwórz plik definicji kroku.

  • Wybierz i kliknij prawym przyciskiem myszy kontur paczki.

  • Kliknij plik „Nowy”.

  • Podaj nazwę pliku jako annotation.java

  • Wpisz następujący tekst w pliku i zapisz go.

package Annotation; 

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 annotation { 
   WebDriver driver = null; 
   @Given("^I am on Facebook login page$") public void goToFacebook() { driver = new FirefoxDriver(); driver.navigate().to("https://www.facebook.com/"); } @When("^I enter username as \"(.*)\"$") 
   public void enterUsername(String arg1) {   
      driver.findElement(By.id("email")).sendKeys(arg1); 
   }
	
   @When ("^I enter password as \"(.*)\"$") public void enterPassword(String arg1) { driver.findElement(By.id("pass")).sendKeys(arg1); driver.findElement(By.id("u_0_v")).click(); } @Then("^Login should fail$") 
   public void checkFail() {  
      if(driver.getCurrentUrl().equalsIgnoreCase(
         "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ 
            System.out.println("Test1 Pass"); 
      } else { 
         System.out.println("Test1 Failed"); 
      } 
      driver.close(); 
   } 
	
   @Then("^Relogin option should be available$") 
   public void checkRelogin() { 
      if(driver.getCurrentUrl().equalsIgnoreCase(
         "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ 
            System.out.println("Test2 Pass"); 
      } else { 
         System.out.println("Test2 Failed"); 
      } 
      driver.close(); 
   }
}

Step 5

Utwórz plik klasy biegacza.

  • Wybierz i kliknij prawym przyciskiem myszy kontur paczki.

  • Kliknij plik „Nowy”.

  • Nadaj plikowi nazwę, na przykład runTest.java

  • Wpisz następujący tekst w pliku i zapisz go.

package Annotation; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})
 
public class runTest { 
}

Step 6

Uruchom test za pomocą opcji -

  • Wybierz plik runTest.java 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.

  • TOM zostanie przekazany jako dane wejściowe w polu nazwy użytkownika.

  • JERRY zostanie przekazane jako dane wejściowe w polu hasła.

  • Login zostanie kliknięty.

  • W przeglądarce wyświetli się komunikat o nieudanym logowaniu.

  • W konsoli zostanie wydrukowany napis „Test Pass”

  • Wynik kroku od 1. do 5. Zostanie ponownie wykonany dla nazwy użytkownika jako „” i hasła jako „”.

Scenario outlinew zasadzie zastępuje zmienne / słowa kluczowe wartością z tabeli. Każdy wiersz w tabeli jest uważany za scenariusz.

Kontynuujmy z tym samym przykładem funkcji logowania na Facebooku. Do tej pory realizowaliśmy jeden scenariusz: Po podaniu poprawnej nazwy użytkownika logowanie się powiodło. 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ę bliżej, dla powyższych trzech scenariuszy: oświadczenia 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 - To wskaże Maven, które pliki 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>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • Dodaj zależność dla JUnit - To wskaże Maven, które pliki 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>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • Sprawdź pliki binarne.

    • Po pomyślnej edycji pom.xml zapisz go.

    • Przejdź do projektu → Wyczyść - 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

      Gdy 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 zostaną wykonane zestawienia DANE, KIEDY i WTEDY.

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, a zmienia się tylko wartość danych, zaleca się użycie tabel danych zarysu scenariusza.

Wygląda to prosto, gdy mamy tylko jeden, dwa, a może pięć scenariuszy w pliku funkcji. Jednak w prawdziwym życiu tak się nie dzieje. Dla każdej testowanej funkcji możemy mieć 10, 20 lub więcej scenariuszy w jednym pliku funkcji. Mogą mieć różny cel (test dymny / test regresji), różne perspektywy (deweloper / QA / BA), różny status (gotowy do realizacji / praca w toku) itp. Jak zarządzać wykonaniem dla takiej masy?

W tym celu Cucumber zapewnił już sposób organizacji wykonania scenariusza za pomocą tagów w pliku funkcji. Każdy scenariusz możemy zdefiniować za pomocą przydatnego tagu. Później, w pliku runner, możemy zdecydować, który konkretny tag (i tak jak scenariusz (y)) ma wykonać Cucumber. Tag zaczyna się od „@”. Po „@” możesz mieć dowolny odpowiedni tekst do zdefiniowania tagu. Zrozummy to na przykładzie.

Załóżmy, że w pliku funkcji są dwa lub więcej scenariuszy. Chcemy wykonać tylko jeden scenariusz w ramach testu dymu. Zatem pierwszą rzeczą jest zidentyfikowanie tego scenariusza, a następnie oznaczenie go tekstem „@SmokeTest” na początku scenariusza. Przyjrzyjmy się temu dokładnie -

Step 1 - Utwórz projekt Maven o nazwie jako cucumberTag.

Step 2- Utwórz pakiet o nazwie cucumberTag pod src/test/java

Step 3- Utwórz plik funkcji o nazwie cucumberTag.feature.

Wpisz następujący tekst w pliku i zapisz go. Ten plik funkcji zawiera dwa scenariusze, w których tylko jeden został oznaczony jakoSmokeTest etykietka.

Feature - Tag ogórek

Scenario Outline - Funkcja logowania do serwisu społecznościowego.

Podany użytkownik przechodzi do Facebooka

Gdy wpiszę nazwę użytkownika jako „<nazwa użytkownika>” i hasło jako „<hasło>”

Wtedy logowanie powinno zakończyć się niepowodzeniem

Przykłady

| username  | password  | 
| username1 | password1 | 
| username2 | password2 |

# następujący scenariusz został oznaczony jako SmokeTest i powinien zostać wykonany. @Test dymu

Scenario:

Podany użytkownik przechodzi do Facebooka

Kiedy wpiszę nazwę użytkownika jako „<>” i hasło jako „<>”

Następnie należy przekierować użytkownika do ponownej próby logowania

Step 4 - Utwórz plik definicji kroku.

  • Wybierz i kliknij prawym przyciskiem myszy kontur paczki.

  • Kliknij plik „Nowy”.

  • Nadaj plikowi nazwę, taką jak cucumberTag.java

  • Wpisz następujący tekst w pliku i zapisz go.

package cucumberTag;
 
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 cucumberTag { 
   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(); } @Then("^User should be redirected to login retry$") 
   public void loginRetry() { 
      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(); 
   } 
}

Step 5 - Utwórz plik klasy biegacza.

  • Utwórz klasę biegacza o nazwie as runTest.java wewnątrz opakowania.

  • Napisz następujący kod.

  • Zapisz plik.

package cucumberTag; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"}) 

public class runTest { }
  • Uruchom opcję testową.

  • 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.

  • W polu nazwy użytkownika i hasła nie zostanie podana żadna wartość.

  • Login zostanie kliknięty.

  • Zostanie załadowana strona ponownej próby logowania.

Nie ma ograniczeń co do definiowania znaczników w pliku elementu. W zależności od potrzeb możesz wyprowadzić tagi, które mają być używane, i scenariusze do wykonania.

Istnieją głównie dwa rodzaje tagów -

  • Default tag- Domyślny tag ma swoje predefiniowane znaczenie. Przykład @ Dev, @ Ignore

  • Custom tag - Niestandardowy tag zapewnia pełną elastyczność w wyborze odpowiedniego tekstu do zdefiniowania tagu.

Etykietę można również zdefiniować na poziomie elementu. Po zdefiniowaniu znacznika na poziomie elementu zapewnia to, że wszystkie scenariusze w tym pliku funkcji dziedziczą ten znacznik. W zależności od charakteru scenariusza możemy użyć więcej niż jednego tagu dla jednej funkcji. Za każdym razem, gdy Cucumber znajdzie odpowiednie wezwanie, zostanie wykonany określony scenariusz.

Ogórek zapewnia również sposób na odwrócenie wyboru tagów. Weź pod uwagę, że z 25 zdefiniowanych scenariuszy 10 jest oznaczonych jako test dymu. Jesteśmy zobowiązani do wykonywania tylko scenariuszy testów regresji.

W tym celu możemy użyć „~” w klasie JUnit runner, aby wykluczyć scenariusz testu dymu. Będzie wyglądać następująco.

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"}, 
   tags = {"~@SmokeTest"})
	
public class runTest { }

Definiując wiele tagów, możemy również zdefiniować logiczne i / lub logiczne oraz działanie.

  • Definiowanie logicznej lub w klasie runner - @dev,@wip - Mówi, że trzeba wykonać scenariusze pasujące do któregokolwiek z tych tagów.

  • Definiowanie logicznej lub w klasie runner - [@dev,~@wip] − Mówi, że trzeba wykonać scenariusze pasujące do obu tych tagów.

Pracując nad automatyzacją możemy napotkać różne scenariusze. Każdy scenariusz ma inne znaczenie i ma inne potrzeby.

Od samego początku braliśmy przykład funkcjonalności logowania do serwisu społecznościowego, gdzie do przekazania mieliśmy tylko dwa parametry wejściowe. Pomyślmy o większej możliwości. A co z funkcją „Rejestracja nowego użytkownika”? Zazwyczaj, jakie mogą być parametry wejściowe podczas rejestracji nowego użytkownika w serwisie społecznościowym? Coś takiego jak następujące -

  • Nazwa Użytkownika
  • Adres e-mail
  • Password
  • Wprowadź ponownie hasło
  • Birthdate
  • Gender
  • Numer telefonu

Feature - Rejestracja nowego użytkownika.

Sprawdź, czy rejestracja nowego użytkownika nie powiodła się po podaniu nieprawidłowych danych wejściowych.

Biorąc pod uwagę, że jestem na nowej stronie rejestracji użytkownika.

Gdy podam nazwę użytkownika i adres e-mail jako adres e-mail i hasło jako, a następnie ponownie wprowadzę hasło jako i Data urodzenia jako i Płeć jako oraz numer telefonu, wówczas rejestracja użytkownika powinna zakończyć się niepowodzeniem.

Na pierwszy rzut oka wygląda to trochę niechlujnie. Czy jest więc lepszy sposób na zarządzanie taką porcją danych wejściowych? Odpowiedzią może być „Tabela danych”. Tabela danych to zestaw danych wejściowych, które należy zapewnić dla pojedynczego znacznika. Ten tag może mieć wartość GIVEN, WHEN lub THEN.

Napiszmy powyższy scenariusz za pomocą tabeli danych i będzie on wyglądał następująco -

Biorąc pod uwagę, że jestem na nowej stronie rejestracji użytkownika

Kiedy wprowadzam prawidłowe dane na stronie

| Fields                 | Values              |
| First Name             | Tom                 |
| Last Name              | Kenny               |
| Email Address          | [email protected] |
| Re-enter Email Address | [email protected] |
| Password               | Password1           |
| Birthdate              | 01                  |

Wtedy rejestracja użytkownika powinna zakończyć się sukcesem.

Przykład

Zautomatyzujmy przykład tabeli danych.

Step 1 - Utwórz projekt testowy Maven o nazwie „DataTableTest”.

  • Idź do Plik → Nowy → Inne → Maven → Projekt Maven → Dalej.

  • Zapewniać group Id (identyfikator grupy będzie jednoznacznie identyfikował Twój projekt we wszystkich projektach).

  • Zapewniać artifact Id (Identyfikator artefaktu to nazwa słoika bez wersji. Możesz wybrać dowolną nazwę zapisaną małymi literami).

  • Kliknij Zakończ.

  • Otwórz 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 Mavenowi, 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 - To wskaże Maven, które pliki 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>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • Sprawdź pliki binarne.

    • Po pomyślnej edycji pom.xml zapisz go.

    • Przejdź do projektu → Wyczyść - zajmie to kilka minut.

Step 2 - Utwórz pakiet o nazwie dataTable pod src/test/java

Step 3 - Utwórz plik funkcji.

  • Utwórz plik elementu o nazwie dataTable.feature w pakiecie dataTable (zobacz sekcję opis scenariusza po bardziej szczegółowe kroki).

  • Napisz następujący tekst.

    Feature - Tabela danych

    Sprawdź, czy rejestracja nowego użytkownika nie powiodła się po przekazaniu nieprawidłowych danych wejściowych.

    Scenario:

    Biorąc pod uwagę, że jestem na nowej stronie rejestracji użytkownika

    Kiedy wprowadzam nieprawidłowe dane na stronie

| Fields                 | Values              |
| First Name             | Tom                 |
| Last Name              | Kenny               |
| Email Address          | [email protected] |
| Re-enter Email Address | [email protected] |
| Password               | Password1           |
| Birthdate              | 01                  |

Wtedy rejestracja użytkownika powinna zakończyć się niepowodzeniem

  • Zapisz plik.

Step 4 - Utwórz plik definicji kroku.

  • Utwórz plik definicji kroku o nazwie „dataTable.java” wewnątrz pakietu dataTable (więcej szczegółowych kroków można znaleźć w opisie scenariusza sekcji).

  • Napisz następujący kod.

package dataTable; 

import java.util.List; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.support.ui.Select;

import cucumber.annotation.en.Given; 
import cucumber.annotation.en.Then; 
import cucumber.annotation.en.When; 
import cucumber.table.DataTable; 

public class stepdefinition { 
   WebDriver driver = null;
	
   @Given("^I am on new user registration page$") public void goToFacebook() { //Intiate web browser instance. driver = new FirefoxDriver(); driver.navigate().to("https://www.facebook.com/"); } @When("^I enter invalid data on the page$") 
   public void enterData(DataTable table){ 
      //Initialize data table 
      List<list> data = table.raw();
      System.out.println(data.get(1).get(1)); 
      
      //Enter data
      driver.findElement(By.name("firstname")).sendKeys(data.get(1).get(1));
      driver.findElement(By.name("lastname")).sendKeys(data.get(2).get(1));
      driver.findElement(By.name("reg_email__")).sendKeys(data.get(3).get(1));     
      driver.findElement(By.name("reg_email_confirmation__")).
         sendKeys(data.get(4).get(1)); 
      driver.findElement(By.name("reg_passwd__")).sendKeys(data.get(5).get(1)); 
      
      Select dropdownB = new Select(driver.findElement(By.name("birthday_day"))); 
      dropdownB.selectByValue("15"); 
		
      Select dropdownM = new Select(driver.findElement(By.name("birthday_month")));
      dropdownM.selectByValue("6"); 
		
      Select dropdownY = new Select(driver.findElement(By.name("birthday_year")));
      dropdownY.selectByValue("1990"); 
		
      driver.findElement(By.className("_58mt")).click(); 
      // Click submit button driver.findElement(By.name("websubmit")).click(); 
   } 
	
   @Then("^User registration should be unsuccessful$") 
   public void User_registration_should_be_unsuccessful() {
      if(driver.getCurrentUrl().equalsIgnoreCase("https://www.facebook.com/")){
         System.out.println("Test Pass"); 
      } else { 
         System.out.println("Test Failed"); 
      } 
      driver.close(); 
   } 
}
  • Zapisz plik.

Step 5 - Utwórz plik klasy biegacza.

  • Utwórz klasę uruchamiającą o nazwie runTest.java wewnątrz pakietu.

  • Napisz następujący kod.

package dataTable; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})
 
public class runTest { }
  • Zapisz plik.

  • Uruchom test, korzystając z opcji

    • Wybierz plik runTest.java z eksploratora pakietów.

    • Kliknij prawym przyciskiem myszy i wybierz opcję Uruchom jako.

    • Wybierz test JUnit.

Po pomyślnym wykonaniu możesz zaobserwować następujące rzeczy.

  • Strona Facebooka zostanie załadowana.

  • Dane zostaną wprowadzone na stronie rejestracji.

  • Kliknij przycisk Prześlij.

  • Zobaczymy, że strona główna nie zostanie wyświetlona, ​​a na konsoli zostanie napisane „Test Pass”.

Commentjest w zasadzie fragmentem kodu przeznaczonym do celów dokumentacyjnych, a nie do wykonania. Czy to plik definicji kroku, czy plik funkcji, aby był bardziej czytelny i zrozumiały. Dlatego ważne jest, aby używać / umieszczać komentarze w odpowiednich miejscach w pliku. Pomaga to również podczas debugowania kodu. Pliki funkcji ogórka mogą mieć komentarze w dowolnym miejscu. Aby wstawić komentarz, wystarczy rozpocząć wypowiedź znakiem „#”.

Różne języki programowania mają różne normy definiowania komentarzy. Zobaczmy, jak sobie z tym radzi Ogórek.

  • Plik definicji kroku - jeśli używasz języka Java jako platformy, oznacz swoje komentarze „//”.

  • Plik funkcji - w przypadku pliku funkcji wystarczy wpisać # przed rozpoczęciem komentowania.

Przykład

Podświetlony tekst w programie odwołuje się do komentarzy w kodzie.

Feature: annotation 

#This is how background can be used to eliminate duplicate steps 
Background: 
User navigates to Facebook 
Given I am on Facebook login page 

#Scenario with AND 
Scenario: 
When I enter username as "TOM" 
And I enter password as "JERRY" 
Then Login should fail 

#Scenario with BUT 
Scenario: 
When I enter username as "TOM" 
And I enter password as "JERRY" 
Then Login should fail 
But Relogin option should be available

Ogórek hookpozwala nam lepiej zarządzać przepływem kodu i pomaga nam zredukować nadmiarowość kodu. Można powiedzieć, że jest to niewidoczny krok, który pozwala nam na wykonanie naszych scenariuszy czy testów.

Aby lepiej zrozumieć to pojęcie, weźmy przykład pliku funkcji i pliku definicji kroku.

Podświetlona część w podanym oświadczeniu faktycznie służy do konfigurowania webdrivera i kończenia sesji webdrivera. Tak więc w rzeczywistości nie ma to związku z istotą „danego stwierdzenia”, a bardziej przypomina konfigurację do testu. Również jeśli myślimy z szerszą perspektywą, to w przypadku wielu scenariuszy dla tej funkcji ta konfiguracja i czyszczenie webdrivera będzie działać z każdym podanym poleceniem. Logicznie rzecz biorąc, sensowne jest wykonanie konfiguracji i czyszczenia tylko raz.

Aby zapewnić optymalizację, można wykorzystać haki. Częściej używamy dwóch rodzajów haków: haczyka „przed” i „po”. Metoda / funkcja / fragment kodu, zdefiniowane w hookach Before i After, zawsze działają, nawet jeśli scenariusz zostanie zaliczony lub nie.

Jak sama nazwa wskazuje, zanim podpięcie zostanie wykonane na długo przed jakimikolwiek innymi scenariuszami testowymi i po przechwyceniu zostanie wykonane po wykonaniu wszystkich scenariuszy.

Haki są definiowane tylko w pliku definicji kroku.

Zautomatyzujmy przykład przechwytywania przed i po.

Step 1 - Utwórz projekt Maven jako hookTest, dodaj niezbędną zależność w pom.xml.

Step 2 - Utwórz pakiet Java o nazwie hookTest pod src/test/java

Step 3 - Utwórz plik definicji kroku o nazwie jako hookTest.java pod pakietem.

package hookTest; 

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 hookTest {
   WebDriver driver = null; 
	
   @Before public void setUp(){ 
      driver = new FirefoxDriver(); 
   } 
	
   @Given("^user navigates to facebook$") 
   public void goToFacebook() { 
      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(); 
   } 
	
   @After public void cleanUp(){ 
      driver.close(); 
   } 
}

Step 4 - Utwórz plik funkcji o nazwie „hookTest.feature” pod pakietem.

Feature - Zarys scenariusza.

Scenario Outline - Test haka

Podany użytkownik przechodzi do Facebooka

Gdy wpiszę nazwę użytkownika jako „<nazwa użytkownika>” i hasło jako „<hasło>”

Wtedy logowanie powinno zakończyć się niepowodzeniem

Przykłady

| username  | password  | 
| username1 | password1 |

Step 5 - Utwórz plik klasy biegacza.

  • Utwórz klasę uruchamiającą jako runTest.java w pakiecie dataTable (zobacz opis scenariusza sekcji, aby uzyskać bardziej szczegółowe kroki).

  • Napisz następujący kod.

package hookTest; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})  

public class runTest { }
  • Zapisz plik.

  • Uruchom test za pomocą opcji -

    • Wybierz plik runTest.java z eksploratora pakietów.

    • Kliknij prawym przyciskiem myszy i wybierz opcję Uruchom jako.

    • Wybierz test JUnit.

Więc teraz, kiedy to uruchomimy, następna będzie sekwencja wykonania.

  • Przed podłączeniem - skonfiguruj sterownik sieciowy i inne wymagania wstępne, aby uruchomić test.

  • Podane oświadczenie

  • Kiedy oświadczenie

  • Następnie oświadczenie

  • Po podłączeniu - zamknij sterownik sieciowy i przeprowadź proces czyszczenia.

Oznaczone haki

Możemy również wskazać, czy chcemy, aby przechwyty przed i po hakach były wykonywane tylko z określonym tagiem. Example- @Before („@ Web”). Ta sama koncepcja logiki znacznika i / lub może być również zastosowana z hakami.Example - @Before (@ dev, @ wip), @Before (@ dev, ~ @ wip)

Ogórek można wykorzystać do przetestowania prawie każdego systemu komputerowego. Do tej pory widzieliśmy, jak przeprowadzić test za pomocą Eclipse IDE. Jest jeszcze jeden sposób, w jaki możemy uruchomić test ogórka, czyli poprzez interfejs wiersza poleceń. Więc jaka jest korzyść z robienia tego?

Uruchamianie dowolnego środowiska testowego z terminala ma swoje zalety, takie jak nadpisywanie konfiguracji uruchamiania wymienionych w kodzie.

Aby wykonać test ogórka za pomocą wiersza polecenia, wykonaj następujące czynności po skonfigurowaniu systemu.

Step 1- Utwórz projekt testowy Maven o nazwie commandLine.

  • 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.

  • Otwórz pom.xml -

    • Przejdź do eksploratora pakietów po lewej stronie Eclipse.

    • Rozwiń projekt CucumberTest.

    • Znajdź pom.xml plik.

    • 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 - To wskaże Maven, które pliki 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>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” w katalogu src / test / java

Step 3 - Utwórz plik funkcji o nazwie „commandLine.feature”.

  • Wybierz i kliknij prawym przyciskiem myszy kontur paczki.

  • Kliknij plik „Nowy”.

  • Nadaj plikowi nazwę, na przykład „commandLine.feature”

  • Wpisz poniższy tekst w pliku i zapisz go.

    Feature - Zarys scenariusza

    Scenario Outline - Funkcja logowania do serwisu społecznościowego.

    Biorąc pod uwagę, że użytkownik przechodzi do Facebooka

    Gdy wpiszę nazwę użytkownika jako „<nazwa użytkownika>” i hasło jako „<hasło>”

    Wtedy logowanie powinno zakończyć się niepowodzeniem

Przykłady

| 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”.

  • Nazwij plik jako commandLine.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; i
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 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 tagu 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”.

  • Nadaj plikowi nazwę, na przykład, 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 { }
  • Otwórz wiersz polecenia.

  • Przejdź do katalogu, w którym znajduje się ten pakiet „commandLine”. e: \ Obszar roboczy \ LoginTest \ src> cd test \ java

  • Uruchom polecenie mvn test: Zobaczysz, że cały scenariusz opisany w pliku funkcji został wykonany (jeśli nie ma żadnego błędu). Wreszcie na dole znajdziesz następujące informacje.

Wynik

This describes the total test run, along with failure if any.

Poprzednie polecenie uruchamia wszystko, jak wspomniano w klasie JUnit Runner. Jeśli jednak chcemy zmienić konfiguracje wymienione w Runnerze, poniżej podajemy kilka przykładów, jak to zrobić.

  • Teraz uruchom polecenie mvn test - Dcucumber.options = "- help" w wierszu polecenia. Uruchomienie tego spowoduje wydrukowanie wszystkich dostępnych opcji.

  • Aby uruchomić tylko określone tagi, uruchom polecenie mvn test -Dcucumber.options = "- tags @SmokeTest" w wierszu polecenia. Będzie uruchamiał tylko tagi, które są oznaczone @SmokeTest.

  • Aby zmienić format wyniku, uruchom w wierszu polecenia polecenie E: \ Workspace \ LoginTest> mvn test -Dcucumber.options = "- plugin junit: target / cucumber-junit-report.xml" Zmienia raport format do generatora raportów JUnit.

Ważne jest, aby zrozumieć, czym jest Junit, zanim zaczniemy dyskusję o Cucumber JUnit Runner. JUnitto platforma testów jednostkowych typu open source dla języka programowania Java. JUnit odegrał ważną rolę w rozwoju programowania opartego na testach i jest jednym z rodziny frameworków do testów jednostkowych, które są wspólnie znane jako xUnit, które powstały z SUnit.

Korzyści z używania JUnit

  • Jednostka ma Graphical User Interface (GUI), co umożliwia szybkie i łatwe pisanie i testowanie kodu źródłowego.

  • JUnit umożliwia deweloperowi stopniowe tworzenie zestawów testów w celu mierzenia postępów i wykrywania niezamierzonych skutków ubocznych.

  • Test można przeprowadzać w sposób ciągły.

  • JUnit pokazuje postęp testu na pasku, który zwykle jest zielony, ale zmienia kolor na czerwony, gdy test się nie powiedzie.

Do tej pory widzieliśmy korzyści płynące z używania JUnit, ale powodem, dla którego omawiamy to teraz, jest framework Cucumber. Z jednej strony Cucumber zapewnia osobom nietechnicznym możliwość definiowania przypadków testowych dla produktu, az drugiej strony oczekujemy płynnego i terminowego wykonywania takich przypadków testowych.

JUnit działa jako pomost między tymi dwoma. Tak więc przebieg wykonywania będzie wyglądał następująco -

  • Zainteresowane strony zapisują plik funkcji.

  • Plik definicji kroku zostanie odpowiednio utworzony.

  • Określ klasę uruchamiającą JUnit, aby uruchomić serię przypadków testowych.

  • Po uruchomieniu klasy biegacza JUnit -

    • Przeanalizuje plik funkcji Gherkin.

    • Wykona funkcje zapisane w pliku definicji kroku zgodnie z instrukcjami pliku funkcji.

    • JUnit połączy wynik testu.

    • Zbuduje raport z testu w określonym formacie (który może być html / JSON).

Ważne jest tutaj, jak skonfigurować JUnit, aby robił te wszystkie rzeczy? Oto kroki -

Step 1 - Zainstaluj Javę.

  • Pobierz jdk i jre z linku http://www.oracle.com/technetwork/java/javase/downloads/index.html

  • Zaakceptuj umowę licencyjną.

  • Zainstaluj JDK i JRE.

  • Ustaw zmienną środowiskową, jak pokazano na poniższym zrzucie ekranu.

Step 2 - Zainstaluj Eclipse.

  • Why we need- Eclipse to zintegrowane środowisko programistyczne (IDE). Zawiera podstawowy obszar roboczy i rozszerzalny system wtyczek do dostosowywania środowiska.

  • How to install -

    • Upewnij się, że JAVA jest zainstalowana na twoim komputerze.

    • Pobierz Eclipse z http://www.eclipse.org/downloads

    • Rozpakuj i Eclipse jest zainstalowane.

Step 3 - Zainstaluj Maven.

  • Why we need- Maven to narzędzie do automatyzacji kompilacji używane głównie w projektach Java. Zapewnia wspólną platformę do wykonywania czynności, takich jak generowanie kodu źródłowego, kompilowanie kodu, pakowanie kodu do pliku jar itp. Również później, jeśli któraś z wersji oprogramowania zostanie zmieniona, Maven zapewnia łatwy sposób na odpowiednie zmodyfikowanie projektu testowego.

  • How to install -

    • Pobierz Maven - https://maven.apache.org/download.cgi

    • Rozpakuj plik i zapamiętaj lokalizację.

    • Utwórz zmienną środowiskową MAVEN_HOME, jak pokazano na poniższym zrzucie ekranu.

  • Edytuj zmienną Path i dołącz Maven, jak pokazano na poniższym zrzucie ekranu.

  • Pobierz wtyczkę MAVEN z Eclipse.

    • Otwórz Eclipse.

    • Muszę pomóc → Eclipse Marketplace → Wyszukiwarka → Integracja Mavena dla Eclipse → INSTALUJ.

Step 4 - Jak skonfigurować Cucumber z Mavenem

  • Utwórz projekt Maven w Eclipse.

    • 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.

  • Otwórz 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 - To wskaże Maven, które pliki 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>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • Sprawdź pliki binarne

    • Pewnego razu pom.xml został pomyślnie edytowany, zapisz go.

    • Przejdź do projektu → Wyczyść - zajmie to kilka minut.

    • Po tym będziesz mógł zobaczyć repozytorium Maven, jak na poniższym zrzucie ekranu.

Step 5 - Utwórz plik funkcji (do omówienia później).

Step 6 - Utwórz plik definicji kroku (do omówienia później).

Step 7 - Utwórz Junit runner, aby uruchomić test (do omówienia później).

Wykonujemy testy, aby zrozumieć stabilność produktu, więc niezależnie od tego, czy jest to test ręczny, czy test automatyczny, bardzo ważne jest, aby wygenerować zwięzły raport, który może opisać stabilność produktu. Dlatego podczas automatyzacji naszego scenariusza testowego za pomocą Cucumber ważne jest, aby wiedzieć, jak lepiej możemy generować nasze raporty z testów Cucumber. Ponieważ wiemy, że Cucumber jest frameworkiem BDD, nie ma wymyślnego mechanizmu raportowania.

Aby to osiągnąć, musimy zintegrować Cucumber z innym narzędziem open source, takim jak Ant / Junit. W tym miejscu zajmiemy się przykładami JUnit, ponieważ zapewnia obsługę języka Java.

Przyjrzyjmy się szczegółom różnych formatów raportów, które są dostępne i łatwe w użyciu -

Ładny format (raport HTML)

Pretty Format generuje raport z testu ogórka w formacie HTML, czyli plik HTML. Jest to najbardziej czytelny format raportu. Generuje raport w taki sam sposób, jak jest to plik funkcji, więc śledzenie jest również łatwe. Możesz także określić lokalizację, w której chcesz umieścić ten raport po wykonaniu testu. Może to być -

  • Local Directory - Możemy określić katalog docelowy raportu jako dowolny katalog lokalny maszyny, na której zostanie uruchomiony test.

  • Server Directory- Mamy również możliwość określenia katalogu docelowego jako dowolnego katalogu na serwerze, który jest publicznie dostępny. Zwykle pomaga to, gdy chcemy, aby nasi klienci / interesariusze przeglądali wyniki testów w dowolnym momencie.

Przykład

Zautomatyzujmy przykład ładnego formatu.

Step 1 - Utwórz projekt Maven o nazwie cucumberReport w Eclipse.

Step 2 - Utwórz pakiet o nazwie CucumberReport pod src/test/java

Step 3 - Utwórz plik funkcji o nazwie cucumberReport.feature

Wpisz następujący tekst w pliku i zapisz go.

Feature - Raport Ogórek

# Ma to na celu sprawdzenie wyniku testu dla przypadku testowego Pass

Scenario: Istnieje funkcja logowania

Biorąc pod uwagę, że otworzyłem przeglądarkę

Kiedy otwieram witrynę Facebooka

Następnie powinien istnieć przycisk logowania

# Ma to na celu sprawdzenie wyniku testu dla przypadku testowego zakończonego niepowodzeniem

Scenario: Zapomniane hasło istnieje

Biorąc pod uwagę, że otworzyłem przeglądarkę

Kiedy otwieram witrynę Facebooka

Następnie powinien istnieć link Zapomniałem hasła

Note- Tutaj scenariusz pierwszy przejdzie, a drugi zakończy się niepowodzeniem. Abyśmy mogli być świadkami, jak wygląda pozytywny i niezadowalający raport.

Step 4 - Utwórz plik definicji kroku.

  • Wybierz i kliknij prawym przyciskiem myszy kontur paczki.

  • Kliknij plik „Nowy”.

  • Podaj nazwę pliku jako cucumberReport.java

  • Wpisz następujący tekst w pliku i zapisz go.

package CucumberReport; 

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 cucumberReport { 
   WebDriver driver = null;
	
   @Given("^I have open the browser$") 
   public void openBrowser() { 
      driver = new FirefoxDriver();
   } 
	
   @When("^I open Facebook website$") public void goToFacebook() { driver.navigate().to("https://www.facebook.com/"); } @Then("^Login button should exits$") 
   public void loginButton() { 
      if(driver.findElement(By.id("u_0_v")).isEnabled()) { 
         System.out.println("Test 1 Pass"); 
      } else { 
         System.out.println("Test 1 Fail");
      }
   } 
	
   @Then("^Forgot password link should exist$") 
   public void forgotPWD() { 
      if(driver.findElement(By.id("")).isEnabled()) { 
         System.out.println("Test 1 Pass"); 
      } else {
         System.out.println("Test 1 Fail");
      } 
   } 
}

Step 5 - Utwórz plik klasy biegacza.

  • Utwórz klasę biegacza o nazwie runTest.java wewnątrz opakowania.

  • Napisz następujący kod. Zapisz plik.

package CucumberReport; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options( 
   format = {"pretty", "html:target/Destination"} ) 
//Specifying pretty as a format option ensure that HTML report will be generated. 
//When we specify html:target/Destination - It will generate the HTML report 

inside the Destination folder, in the target folder of the maven project.
 
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.

Oba scenariusze zostaną wykonane jeden po drugim.

W katalogu docelowym zostanie utworzony folder o nazwie Destination.

Raport będzie tam nazwany „Index.html”.

Otwórz plik Index.html w przeglądarce internetowej.

Zobaczysz raport wymieniony na poniższym obrazku -

Dokładnie podkreśla kolor nieudanego scenariusza. Ponadto zobaczysz wyróżnienie dla nieudanego kroku w tym scenariuszu. To sprawia, że ​​debugowanie jest bardzo łatwe.

Raport JSON

Do tej pory widzieliśmy, jak łatwy jest raport HTML. Jeśli jednak chcemy przekazać informacje z tego raportu do jakiejkolwiek innej aplikacji, jest to trochę trudne w przypadku raportów HTML. Pojawia się potrzeba innego formatu raportowania. Notacja obiektu skryptu JSON-Java to kolejny format generowania raportów z testów Cucumber. JSON to obiekt zawierający wiele informacji przechowywanych w formacie tekstowym. Raporty JSON wnoszą inną wartość do tabeli. Raport JSON może być również używany jako ładunek informacji do przesłania między różnymi serwerami. Ponadto może być używany do wyświetlania jako strona internetowa. Krótko mówiąc, raporty JSON mogą być używane przez inne aplikacje.

What is payload information?Gdy dane są przesyłane przez Internet, każda przesyłana jednostka zawiera zarówno informacje nagłówka, jak i faktyczne przesyłane dane. Nagłówek identyfikuje źródło i miejsce docelowe pakietu, podczas gdy rzeczywiste dane są określane jako ładunek. Aby wygenerować raport JSON, wystarczy wprowadzić zmianę w pliku runner.

  • Zmień opcję formatu w pliku runner w następujący sposób.

package CucumberReport; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options( format={"json:target/Destination/cucumber.json"}) 

//When we specify json:target/Destination/cucumber.json - It will generate the JSON  
report inside the Destination folder, in the target folder of the maven project.

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.

    • Oba scenariusze zostaną wykonane jeden po drugim.

  • Raport będzie tam nazwany jako cucumber.json (jak w klasie biegaczy).

  • otwarty cucumber.json plik w edytorze tekstu.

  • Po wstawieniu znaków końca linii zobaczysz raport wymieniony na poniższym zrzucie ekranu -

Note - JSON jest mniej czytelny w porównaniu z formatem raportu HTML.

Jest bardzo prawdopodobne, że test zakończy się niepowodzeniem z nieznanych przyczyn. Identyfikacja przyczyny awarii i jej naprawienie jest bardzo ważne. Ten proces jest znany jakodebugging. Poniżej znajduje się kilka wskazówek i sztuczek, które sprawiają, że debugowanie Cucumber jest nieco łatwe.

Opcja debugowania jest dostępna w Eclipse. Umieść punkt przerwania. Kliknij plik i debuguj, wykonując następujące czynności -

Step 1 - Umieść ręczne punkty przerwania w pliku definicji kroku Ruby.

Przykład

require 'ruby-debug' 
Then /^the process should exit cleanly$/ do 
breakpoint 
assert @exited_cleanly, "Process did not exit cleanly: #{@stdout}" 
end

Step 2 - Możemy również zdefiniować oddzielny krok debugowania, taki jak poniżej w pliku definicji kroku.

Then /^I debug$/ do 
breakpoint 
0 
end

Step 3 - Webratjest domyślnym narzędziem do testowania ogórków w Railsach. Umożliwia wykonywanie takich czynności, jak klikanie linków, pisanie i przesyłanie formularzy itd.

Będą na przykład sytuacje, w których spróbujesz kliknąć coś, a tego nie ma. Otrzymasz dużą porcję HTML, która zostanie odrzucona, a ustalenie, co to dokładnie oznacza, może być prawdziwym problemem.

save_and_open_page

Webrat zapewnia metodę save_and_open_page, która przechwytuje bieżący kod HTML, zapisuje go, a następnie otworzy dla Ciebie w przeglądarce. Niezwykle przydatny.

When /^I follow "(.*)"$/ do |link| 
save_and_open_page 
click_link(link) 
end

Aby uruchomić test ogórka w Javie, wykonaj następujące kroki.

Step 1 - Zainstaluj Javę -

  • Pobierz jdk i jre z

    http://www.oracle.com/technetwork/java/javase/downloads/index.html

  • Zaakceptuj umowę licencyjną.

  • Zainstaluj JDK i JRE.

  • Ustaw zmienną środowiskową, jak pokazano na poniższym obrazku.

Step 2 - Zainstaluj Eclipse IDE -

  • Upewnij się, że JAVA jest zainstalowana na twoim komputerze.

  • Pobierz Eclipse z https://eclipse.org/downloads/

  • Rozpakuj i zainstalowane Eclipse.

Step 3 - Zainstaluj Maven -

  • Pobierz Maven -https://maven.apache.org/download.cgi

  • Rozpakuj plik i zapamiętaj lokalizację.

  • Utwórz zmienną środowiskową MAVEN_HOME, jak pokazano na poniższej ilustracji.

  • Edytuj zmienną Path i dołącz Maven.

  • Pobierz wtyczkę MAVEN z Eclipse

    • Otwórz Eclipse.

    • Muszę pomóc → Eclipse Marketplace → Wyszukiwarka → Integracja Mavena dla Eclipse → INSTALUJ

Step 4 - Skonfiguruj Cucumber z Mavenem.

  • Utwórz projekt Maven.

    • 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.

Step 5 - Otwórz 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”.

Step 6 - 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>

Step 7 - Dodaj zależność dla Cucumber-Java - To 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>

Step 8 - 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>

Step 9- 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>

Step 10 - Sprawdź pliki binarne.

  • Po pomyślnej edycji pom.xml zapisz go.

  • Przejdź do projektu → Wyczyść - zajmie to kilka minut.

  • Będziesz mógł zobaczyć repozytorium Maven.

Step 11 - Utwórz pakiet pod src/test/java nazwany jak cucumberJava.

Step 12 - Utwórz plik funkcji

  • Wybierz i kliknij prawym przyciskiem myszy kontur paczki.

  • Kliknij plik „Nowy”.

  • Nadaj plikowi nazwę, taką jak cucumberJava.feature.

  • Wpisz następujący tekst w pliku i zapisz go.

    Feature: CucumberJava

    Scenario: Istnieje funkcja logowania

    Biorąc pod uwagę, że otworzyłem przeglądarkę

    Kiedy otwieram witrynę Facebooka

    Następnie przycisk logowania powinien zostać zamknięty

Step 13 - Utwórz plik definicji kroku -

  • Wybierz i kliknij prawym przyciskiem myszy kontur paczki.

  • Kliknij plik „Nowy”.

  • Nadaj plikowi nazwę, taką jak annotation.java.

  • Wpisz następujący tekst w pliku i zapisz go.

package CucumberJava; 
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 cucumberJava { 
   WebDriver driver = null; 
   @Given("^I have open the browser$") public void openBrowser() { driver = new FirefoxDriver(); } @When("^I open Facebook website$") 
   public void goToFacebook() { 
      driver.navigate().to("https://www.facebook.com/"); 
   } 
   @Then("^Login button should exits$") 
   public void loginButton() { 
      if(driver.findElement(By.id("u_0_v")).isEnabled()) { 
         System.out.println("Test 1 Pass"); 
      } else { 
         System.out.println("Test 1 Fail"); 
      } 
      driver.close(); 
   } 
}

Step 14 - Utwórz plik klasy biegacza.

  • Wybierz i kliknij prawym przyciskiem myszy kontur paczki.

  • Kliknij plik „Nowy”.

  • Podaj nazwę pliku jako runTest.java.

  • Wpisz następujący tekst w pliku i zapisz go.

package cucumberJava; 
import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"}) 
public class runTest { 
}

Step 15 - Uruchom test za pomocą opcji -

  • Wybierz plik runTest.java z eksploratora pakietów.

  • Kliknij prawym przyciskiem myszy i wybierz opcję, Run as.

  • Wybierz test JUnit.

Po wykonaniu zobaczysz następujące rzeczy:

  • Otworzy się instancja przeglądarki internetowej Firefox.

  • Otworzy się strona logowania do Facebooka w przeglądarce.

  • Wykryje przycisk logowania.

  • Przeglądarka zamknie się.

  • W oknie JUnit zobaczysz scenariusz z zielonym znacznikiem haczyka, który oznacza powodzenie wykonania testu.

Język Ruby ma następujące zalety -

  • Łatwo to zrozumieć.

  • Jest to język zorientowany obiektowo.

  • Jest to potężna biblioteka klas.

  • Ma ogromne wsparcie online.

Poniżej przedstawiono krok po kroku, jak Cucumber współpracuje z Rubim.

Step 1 - Zainstaluj Rubiego.

  • Przejdź do strony pobierania RubyInstaller.

  • Pobierz wersję najlepiej dopasowaną do Twojego systemu operacyjnego (np. 32- lub 64-bitową).

  • Uruchom pobrany plik exe.

  • Podczas instalacji zaznacz opcję „Dodaj Ruby…” i „Skojarz…”, jak pokazano na poniższym obrazku.

Step 2 - Pobierz i rozpakuj zestaw Dev.

  • Przejdź do strony pobierania RubyInstaller.

  • Pobierz wersję Devkit najlepiej dopasowaną do Twojego systemu operacyjnego (np. 32- lub 64-bitową).

  • Wypakuj devkit w folderze c: \ Ruby \ Devkit.

  • Otwórz wiersz polecenia.

  • Wewnątrz pakietu deweloperskiego Ruby uruchom następujące polecenie.

C:\Ruby\devkit> ruby dk.rb init 
C:\Ruby\devkit> ruby dk.rb install

Step 3 - Zainstaluj Ogórek i inny klejnot Ruby.

  • Aby zainstalować Cucumber, najpierw zaktualizuj bieżącą konfigurację klejnotów

C:\Users\Admin> gem update –system
  • Następnie zainstaluj klejnoty potrzebne do testowania internetowego Ogórka.

C:\Users\Admin> gem install --no-ri --no-rdoc rspec 
C:\Users\Admin> gem install --no-ri --no-rdoc win32console 
C:\Users\Admin> gem install --no-ri --no-rdoc watir-webdriver 
C:\Users\Admin> gem install --no-ri --no-rdoc cucumber
  • Uruchom ogórka

C:\Users\Admin\Documents>cucumber –init 
C:\Users\Admin\Documents>cucumber

Step 4 - Zainstaluj IDE - KOMODO.

  • Przejdź do strony http://www.activestate.com/komodo-ide/downloads

  • Pobierz darmowy instalator próbny.

  • Kliknij dwukrotnie pobrany plik exe.

  • Postępuj zgodnie z instrukcjami instalacji.

  • Zakończ instalację i otwórz IDE.

Step 5 - Zainstaluj Watir - Przejdź do wiersza polecenia i uruchom następujące polecenie, "gem install watir"

Step 6 - Zainstaluj rspec - Przejdź do wiersza polecenia i uruchom następujące polecenie, "gem install rspec"

Step 7 - Utwórz plik funkcji.

  • Otwórz edytor KOMODO.

  • Kliknij ikonę nowego pliku.

  • Napisz następujący tekst.

    Feature: Użytkownicy muszą mieć możliwość wyszukiwania treści za pomocą Google.

    Scenario: Wyszukaj termin.

    Biorąc pod uwagę, że wszedłem "watir" do zapytania.

    Kiedy klikam "search"

    Wtedy powinienem zobaczyć wyniki

  • Kliknij save Ikona.

  • Podaj nazwę jako CucumberRuby.feature.

  • Wybierz dowolny folder, na przykład: “e:\WithRuby”

  • Zapisz plik.

Step 8 - Utwórz plik definicji kroku.

  • Otwórz edytor KOMODO.

  • Kliknij ikonę pliku „Nowy”.

  • Napisz następujący kod.

require "watir-webdriver" 
require "rspec/expectations" 

Given /^I have entered "([^"]*)" into the query$/ do |term| 
@browser ||= Watir::Browser.new :firefox 
@browser.goto "google.com" 
@browser.text_field(:name => "q").set term 
end 

When /^I click "([^"]*)"$/ do |button_name| @browser.button.click end Then /^I should see some results$/ do 
@browser.div(:id => "resultStats").wait_until_present 
@browser.div(:id => "resultStats").should exist 
@browser.close 
End
  • Kliknij ikonę zapisywania.

  • Podaj nazwę jako CucumberRuby.rb

  • Wybierz dowolny folder, na przykład: “e:\WithRuby”

  • Zapisz plik.

Step 9 - Utwórz plik testowy.

  • Otwórz edytor KOMODO.

  • Kliknij ikonę pliku „Nowy”.

  • Napisz następujący kod.

require "rubygems" 
require "test/unit" 
require "watir-webdriver" 

class GoogleSearch < Test::Unit::TestCase 
def setup 
@browser ||= Watir::Browser.new :firefox 
end 

def teardown 
@browser.close 
end 

def test_search 
@browser.goto "google.com" 
@browser.text_field(:name => "q").set "watir" 
@browser.button.click 
@browser.div(:id => "resultStats").wait_until_present assert 
@browser.title == "watir - Google Search" 
end 
end
  • Kliknij ikonę Zapisz.

  • Nazwij plik jako test.rb i wybierz dowolny folder, na przykład: „e: \ WithRuby”

  • Zapisz plik.

Step 10 - Uruchom plik funkcji.

  • Przejdź do wiersza poleceń.

  • Przejdź do katalogu e:\WithRuby

  • Uruchom następujące polecenie.

e:\With Ruby>ruby test.rb

Po wykonaniu zobaczysz następujące rzeczy:

  • Otworzy się instancja przeglądarki internetowej.

  • Strona internetowa Google.com zostanie załadowana.

  • Wyszukaj tekst watir zostanie wpisany.

  • Przycisk wyszukiwania zostanie umieszczony.

  • Wyniki wyszukiwania zostaną wyświetlone na stronie internetowej.

  • Instancja przeglądarki zostanie zamknięta.