Ogórek - Funkcje

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 dla każdej testowanej funkcji był osobny plik 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 pasować, 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ść na stronę główną, 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 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ć w każdym kroku testu (tj. GIVEN / THEN / WHEN), możesz zapisać go w pliku definicji kroku. Upewnij się, że dla każdego kroku zdefiniowano kod / funkcję.

Ta funkcja może być funkcjami Java, w których możemy używać poleceń Java i Selenium w celu zautomatyzowania naszych kroków testowych.