TestNG, projenizde paralel olarak test yöntemleri, test sınıfları ve test senaryoları çalıştırmanıza olanak tanır. Paralel yürütme gerçekleştirerek, testler farklı iş parçacıklarında aynı anda başlatılıp yürütüldüğünden 'yürütme süresini' azaltabiliriz.
Burada, TestNG kullanarak birden fazla sınıfın (diğer bir deyişle farklı süitlerin) nasıl çalıştırılacağını göreceğiz.
Adım 1) Testi yürütmek için bir TestNG.xml dosyası oluşturma
Bunu yapmak için aşağıdaki adımları izleyin.
- Tutulmada yeni bir proje oluştur
- Projelerde iki paket oluşturun (bunları com.suite1 ve com.suite2 olarak adlandırın)
- Her pakette bir sınıf oluşturun (bunları Flipkart.java ve Snapdeal.java olarak adlandırın) ve aşağıdaki kodu ilgili sınıflara kopyalayın
- Projenizde yeni bir dosya oluşturun ve bunu testng.xml olarak adlandırın (Tutulma için test eklentisi yüklediğinizden emin olun, talimatlar burada mevcuttur). Testng.xml tüm yapılandırmayı içerir (sınıf adları, test adları ve takım adları.
Flipkart.java
paket com.suite1;içe aktar java.util.concurrent.TimeUnit;import org.openqa.selenium.Alert;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.interactions.Actions;import org.testng.annotations.AfterClass;import org.testng.annotations.BeforeClass;import org.testng.annotations.Test;public class Flipkart {WebDriver sürücüsü = yeni FirefoxDriver ();Dize kullanıcı adı = ""; // Kullanıcı adınızı ve parolanızı değiştirinDize şifresi = "";// Bu yöntem, flipkart URL'sinde gezinmek içindir@Dersten öncepublic void init () {driver.manage (). window (). maximize ();driver.manage (). timeout (). örtük olarak Bekleme (60, TimeUnit.SECONDS);driver.navigate (). to ("https://www.flipkart.com");}// Flipkart'ta oturum açmak için@Ölçekgenel geçersiz giriş () {driver.findElement (By.partialLinkText ("Login")). tıklayın ();driver.findElement (By.cssSelector (". Fk-input.login-form-input.user-email")).sendKeys (kullanıcı adı);driver.findElement (By.cssSelector (". Fk-input.login-form-input.user-pwd")).sendKeys (parola);driver.findElement (By.cssSelector (". submit-btn.login-btn.btn")). tıklayın ();}// Ürün ara@Ölçekpublic void searchAndSelectProduct () {driver.findElement (By.id ("fk-top-search-box")) sendKeys ("moto g3");driver.findElement (By.cssSelector ("search-bar-submit.fk-font-13.fk-font-bold")).Tıklayın();// arama sonuçlarındaki ilk öğeyi seçinString css = ".gd-row.browse-grid-row: nth-of-type (1)> div: nth-child (1)> div> div: nth-child (2)> div> a";driver.findElement (By.cssSelector (css)). tıklayın ();}@Ölçekpublic void buyAndRemoveFromCart () {driver.findElement (By.cssSelector (". Btn-express-checkout.btn-big.current")).Tıklayın();driver.findElement (By.cssSelector (". remove.fk-inline-block")). tıklayın ();Uyarı a = driver.switchTo (). Alert ();a.accept ();}@Ölçekpublic void logout () {Eylemler s = yeni Eylemler (sürücü);WebElement user = driver.findElement (By.partialLinkText (kullanıcı adı));s.moveToElement (kullanıcı) .build (). perform ();driver.findElement (By.linkText ("Logout")). tıklayın ();}@Dersten sonrapublic void quit () {driver.close ();}}
SnapDeal.java
paket com.suite2;içe aktar java.util.concurrent.TimeUnit;import org.openqa.selenium.Alert;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.interactions.Actions;import org.testng.annotations.AfterClass;import org.testng.annotations.BeforeClass;import org.testng.annotations.Test;public class SnapDeal {WebDriver sürücüsü = yeni FirefoxDriver ();Dize kullanıcı adı = ""; // Kullanıcı adınızı ve parolanızı değiştirinDize şifresi = "";String pinCode = "";// Bu yöntem, anlık URL'de gezinmek içindir@Dersten öncepublic void init () {driver.manage (). window (). maximize ();driver.manage (). timeout (). örtük olarak Bekleme (60, TimeUnit.SECONDS);driver.navigate (). to ("https://www.snapdeal.com");}// Flipkart'ta oturum açmak için@Ölçekgenel geçersiz giriş () {driver.findElement (By.xpath ("// button [text () = 'Login']")) tıklayın ();driver.switchTo (). çerçeve ("loginIframe");driver.findElement (By.cssSelector ("div [onClick = 'getLoginForm ()']")).Tıklayın();driver.findElement (Yazan.id ("j_username")). sendKeys (kullanıcı adı);driver.findElement (By.id ("j_password_login")). sendKeys (parola);driver.findElement (By.id ("signin_submit")). tıklayın ();driver.switchTo (). defaultContent ();}// Ürün ara@Ölçekpublic void searchAndSelectProduct () {driver.findElement (By.cssSelector (". col-xs-20.searchformInput.keyword")).sendKeys ("iphone 6s");driver.findElement (By.cssSelector (". sd-icon.sd-icon-search")) tıklayın ();// arama sonuçlarındaki ilk öğeyi seçinString css = ".product_grid_row: nth-of-type (1)> div: nth-child (1)";driver.findElement (By.cssSelector (css)). tıklayın ();}@Ölçekpublic void buyAndRemoveFromCart () {driver.findElement (By.xpath ("// li [içerir (metin (), 'Gümüş')]")) tıklayın ();driver.findElement (By.id ("pin kodu kontrolü")). sendKeys (pinCode);driver.findElement (By.id ("buy-button-id")). tıklayın ();driver.findElement (By.cssSelector ("i [title = 'Öğeyi Sil']")) tıklayın ();Uyarı a = driver.switchTo (). Alert ();a.accept ();}@Ölçekpublic void logout () {driver.findElement (By.linkText ("ALIŞVERİŞE ŞİMDİ BAŞLA")) tıklayın ();Eylemler s = yeni Eylemler (sürücü);WebElement user = driver.findElement (By.cssSelector (". Sd-icon.sd-icon-user"));s.moveToElement (kullanıcı) .build (). perform ();driver.findElement (By.linkText ("Logout")). tıklayın ();}@Dersten sonrapublic void quit () {driver.close ();}}
TestNg.xml
Nihai proje yapısı aşağıdaki gibidir,
Adım 2) TestNG'de paralel yürütme
Yukarıda gösterildiği gibi xml dosyası oluşturduktan sonra, bir sonraki adımda paralel testi gerçekleştireceğiz. Kod aşağıdadır.
1) iş parçacığı sayısı : Bu, sayı betiğine bağlı olarak paralel yürütme için kullanılır. Paralel veya sıralı olarak çalışacaktır.
2) ayrıntılı : Konsolda yürütme ayrıntılarını günlüğe kaydetmek için kullanılır. Değer 1-10 olmalıdır. Konsol penceresindeki günlük ayrıntıları, testng.xml yapılandırma dosyasındaki ayrıntılı özniteliğin değerini artırdıkça daha ayrıntılı ve daha net hale gelecektir.
3) ad : Süitin adı . İşte "Gmail Suite"
4) Paralel : Betikleri paralel çalıştırmak için değer testler / sınıflar / yöntemler / suitler olabilir. Varsayılan değer hiçbiri
Testng.xml dosyasını sağ tıklayın ve test olarak çalıştır'ı seçin, başarılı olduktan sonra tüm sonuçları göreceksiniz
Yukarıdaki kodu çalıştırdığınızda, aşağıdaki çıktıyı alacaksınız.
Çıktı:
1) testng.xml'de verilen paketin adı
2) testng.xml'de verilen testin adı
3) testng.xml'de verilen sınıfın adı
4) .java dosyasında @Test ile açıklanmış yöntem adları
Aynı şekilde, anlık anlaşma için de test paketi yürütecektir.
Sonuç:
Burada yukarıdaki örnekte Testng'in paralel testi yürütmek için nasıl kullanılacağını gördük. TestNG, tek bir yapılandırma dosyasında (XML) birden çok testi paralel olarak yürütme seçeneği sunar.