Paralelné vykonávanie v seléne: Manipulácia s reláciami & Závislosť TestNG

Obsah:

Anonim

Aby sme pochopili, ako paralelne spúšťať skripty, najskôr to pochopíme

Prečo potrebujeme spracovanie relácií?

Počas vykonávania testu musí Selenium WebDriver po celý čas interagovať s prehliadačom, aby vykonal dané príkazy. V čase vykonania je tiež možné, že predtým, ako sa dokončí súčasné spustenie, niekto iný začne vykonávať iný skript, na rovnakom počítači a v rovnakom type prehliadača.

V takejto situácii potrebujeme mechanizmus, pomocou ktorého by sa naše dve rôzne popravy nemali navzájom prekrývať. To sa dá dosiahnuť pomocou Session Handling in Selenium.

Ako dosiahnuť spracovanie relácie v selenovom webovom ovládači?

Ak skontrolujete zdrojový kód Selenium WebDriver, nájdete premennú s názvom „sessionId“. Kedykoľvek vytvoríme novú inštanciu objektu WebDriver, vygeneruje sa nový 'sessionId' a pripojí sa k danému konkrétnemu ovládaču Firefox / Chrome / IE ().

Čokoľvek, čo urobíme potom, sa vykoná iba v tejto konkrétnej relácii prehliadača Firefox.

Pretože sa jedná o zabudovanú funkciu, nie je potrebné explicitne priraďovať ID relácie

Príklad kódu: Tu sa vygenerujú dve rôzne relácie pre dva rôzne WebDriver.

import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;verejná trieda SessionHandling {public static void main (String ... strings) {// Prvá relácia WebDriveruOvládač WebDriver = nový FirefoxDriver ();// Prejdite na stránku guru99driver.get ("http://demo.guru99.com/V4/");// Druhá relácia WebDriveruOvládač WebDriver2 = nový FirefoxDriver ();// Prejdite na stránku guru99driver2.get ("http://demo.guru99.com/V4/");}}

Ako spustiť paralelné testy so selénom

Existujú situácie, kedy chcete vykonať viac testov súčasne.

V takýchto prípadoch možno použiť atribút „paralelný“

Atribút parallel tagu suite môže akceptovať štyri hodnoty:

testy Všetky testovacie prípady vo vnútri značky testovacieho súboru XML budú prebiehať paralelne.
triedy Všetky testovacie prípady vo vnútri triedy Java budú bežať paralelne
metódy Všetky metódy s anotáciou @Test sa budú vykonávať paralelne.
inštancie Testovacie prípady v tej istej inštancii sa budú vykonávať paralelne, ale dve metódy dvoch rôznych inštancií budú bežať v inom vlákne.

Atribút count-count vám umožňuje určiť, koľko vlákien by malo byť pridelených na toto vykonanie.

Kompletný príklad: V tomto príklade budú paralelne prebiehať tri testovacie prípady a vyplnia prihlasovacie údaje na stránke http://demo.guru99.com

Kompletný projekt bude vyzerať takto:

TestGuru99MultipleSession.java

import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import org.testng.annotations.Test;verejná trieda TestGuru99MultipleSession {@Testpublic void executSessionOne () {// Prvá relácia WebDriveruSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Ovládač WebDriver = nový ChromeDriver ();// Prejdite na stránku guru99driver.get ("http://demo.guru99.com/V4/");// vyhľadať textové pole pre meno používateľa a vyplniť hodriver.findElement (By.name ("uid")). sendKeys ("Driver 1");}@Testpublic void executeSessionTwo () {// Druhá relácia WebDriveruSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Ovládač WebDriver = nový ChromeDriver ();// Prejdite na stránku guru99driver.get ("http://demo.guru99.com/V4/");// vyhľadať textové pole pre meno používateľa a vyplniť hodriver.findElement (By.name ("uid")). sendKeys ("Driver 2");}@Testpublic void executSessionThree () {// Tretie zasadnutie WebDriveruSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Ovládač WebDriver = nový ChromeDriver ();// Prejdite na stránku guru99driver.get ("http://demo.guru99.com/V4/");// vyhľadať textové pole pre meno používateľa a vyplniť hodriver.findElement (By.name ("uid")). sendKeys ("Driver 3");}}

TestNG.XML


Poradie testovacích prípadov a závislosť

Môžete nastaviť poradie a závislosť vykonania Testovacieho prípadu.

Predpokladajme, že máte dva testovacie prípady „testGuru99TC1“ a „testGuru99TC2“ a chcete vykonať testovací prípad „testGuru99TC2“ pred „testGuru99TC1“. V takom prípade použijeme atribút 'dependsOnMethods' na vytvorenie závislosti a poradia vykonania.


Zhrnutie

  • Pre novú inštanciu WebDriver sa vytvorí nové ID relácie.
  • Jedna relácia sa spojí s jedným konkrétnym prehliadačom.
  • Pomocou atribútu vlákno a paralelne spúšťate svoje skripty paralelne.
  • Môžete použiť závislosť atribútov na nastavenie poradia na testovanie vykonania