learn how use testng annotations selenium
TestNG, çoğunuzun bildiği gibi, bir otomasyondur Selenium'da yaygın olarak kullanılan çerçeve . Tüm test uzmanlarının TestNG ile çalışırken kullanılan ek açıklamaları anlaması önemlidir.
Basitçe ifade etmek gerekirse, TestNG ek açıklamaları, aşağıdaki yöntemlerin nasıl çalıştırılacağını kontrol etmek için program / iş mantığına eklenen kod satırlarıdır.
Bu makalede, farklı ek açıklama türlerinin önemi ve bunların kullanımına odaklanacağım.
Aşağıda, projem için kullanılan kurulumu paylaştım. Projeniz için buna mutlaka uyulması gerekmez.
Ek açıklamalar proje gereksinimlerinize göre farklılık gösterir. Ancak, yürütme akışı aynı olacaktır.
Ön koşullar:
- Eclipse'e TestNG'yi yükleyin. Kontrol Kurulum kılavuzu ile ilgili bu eğitim .
- JDK - Java Geliştirme kiti
- Ek açıklamalar yalnızca Java 1.5 sürümü veya üstü ile kullanılabilir
Test komut dosyaları yazmadan veya bir proje oluşturmadan önce, ek açıklamaların çalıştığı hiyerarşiyi bilmeliyiz. Uygulama her zaman aynı kalacaktır.
Örneğin, aşağıdaki betiği derleyin ve çalıştırın ve yürütme sırasına dikkat edin. Aşağıdaki gibi olacaktır:
- BeforeSuite
- Test Öncesi
- Dersten önce
- BeforeMethod
- Test Senaryosu 1
- AfterMethod
- BeforeMethod
- Test Senaryosu 2
- AfterMethod
- Dersten sonra
- Test Sonrası
- AfterSuite
Misal:
public class test { @BeforeMethod public void beforeMethod() { System.out.println(' Before Method will execute before every test method'); } @AfterMethod public void afterMethod() { System.out.println('After Method will execute after every test method '); } @BeforeClass public void beforeClass() { System.out.println('Before Class will always execute prior to Before Method and Test Method '); } @AfterClass public void afterClass() { System.out.println('After Class will always execute later to After Method and Test method'); } @BeforeTest public void beforeTest() { System.out.println('Before Test will always execute prior to Before Class, ,Before Method and Test Method '); } @AfterTest public void afterTest() { System.out.println('After Test will always execute later to After Method, After Class '); } @BeforeSuite public void beforeSuite() { System.out.println(“Before Suite will always execute prior to all annotations or tests in the suite.'); } @AfterSuite public void afterSuite() { System.out.println('After suite will always execute at last when all the annotations or test in the suite have run.'); } @Test public void testCase1() { System.out.println('This is my First Test Case 1'); } @Test public void testCase2() { System.out.println('This is my Second Test Case 2'); } }
Test komut dosyası sürecini aşağıdaki adımlara ayırabiliriz:
- Testinizin iş mantığını yazın ve yukarıya ekleyin TestNG ek açıklamaları kodunuzda
- Testinizle ilgili bilgileri (ör. Sınıf adı, gruplar, çalıştırmak istediğiniz yöntemler vb.) testng.xml dosya.
- TestNG'yi Çalıştır
Ancak soru hala kalır - yukarıdaki ek açıklamalarda hangi bilgileri vermeliyiz?
Yukarıdaki ek açıklamaları kullanarak başarabileceğimiz önemli adımlara bir göz atın:
# 1) @Ölçek
Bu, otomasyon betiğimizin iş mantığını, otomatikleştirmek istediğimiz şeyleri yazacağımız ana bölümüdür. Nitelikleri test yöntemimize aktarabiliriz.
Test yöntemimize iletebileceğimiz özelliklerin listesi aşağıdadır:
- daima koş : Bu, yöntemin bağlı olduğu parametreler başarısız olsa bile bir yöntemin her zaman çalıştığından emin olmak istediğimizde kullanılır. True olarak ayarlanırsa, bu test yöntemi her zaman çalışır. Örneğin: @Test (her zamanRun = true)
- dataProvider : TestNG dataProvider, parametrelendirme için herhangi bir veri sağlamak için kullanılır. Örneğin. @Test (dataProvider = 'Merhaba').
- dataProviderClass : Bu, verileri veri sağlayıcıya aktardığımız sınıftır. Bizim durumumuzda dataProvider sınıf adı 'Merhaba' dır.
- subsOnGroups : Bu yöntemin bağlı olduğu grupların listesidir. Örneğin: @Test (gruplar = {'Şehir', 'Eyalet'})
- bağlıdırOnMethods: Bu komut, bağımlı yöntemine göre bir yöntemi yürütmek için kullanılır. Örneğin: @Test (bağlıdırOnMethods = {'OpenBrowser', 'veritabanı çalışıyor'})
- açıklama : Yöntemin açıklamasıdır. Örneğin: @Test (açıklama = 'test yöntemi')
- invocationCount : Bir yöntemin kaç kez çağrılması gerektiğini belirtir. Bir döngü olarak çalışacaktır. Örneğin: @Test (invocationCount = 7) . Dolayısıyla, bu yöntem 7 kez çalışacaktır.
- invocationTimeOut : Bu, tüm invocationCount'un tamamlanması için bir yöntemin alması gereken maksimum milisaniye sayısını ifade eder. İnvocationCount belirtilmezse bu öznitelik yok sayılacaktır. Örneğin: @Test (invocationCount = 7, invocationTimeOut = 30)
- öncelik : Bu komut, test yönteminin önceliğini belirler. Önce daha düşük öncelikler planlanacaktır. Örneğin: @Test (öncelik = 1)
#iki)@BeforeSuite ve @AfterSuite
İçinde @Evleneceksen açıklamalı yöntem, kurabilir ve başlayabilirsiniz selenyum sürücüler ve içinde @Kafadergisi açıklamalı yöntem, Selenium sürücülerini durdurabilirsiniz
Misal :
public class TestSuiteSetup () { @BeforeSuite(alwaysRun = true) public void setupSuite() { WebDriver driver = new FirefoxDriver(); } @AfterSuite(alwaysRun = true) public void tearDown() { driver().close(); } }
# 3)@BeforeClass ve @AfterClass
İçinde @Dersten önce açıklamalı yöntem, firefox özelliklerinizi kurabilir, sürücünüzü başlatabilir ve benzerlerini yapabilirsiniz. @Dersten sonra açıklamalı yöntem, sürücüyü durdurabilirsiniz
Misal :
@BeforeClass(description = 'Set capabilities for your Firefox browser and set time it should wait for a page to load.') public static void firefoxSetUp() throws MalformedURLException { DesiredCapabilities capability = DesiredCapabilities.firefox(); driver = new FirefoxDriver(capability); driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); driver.manage().window().setSize(new Dimension(1920, 1080)); } @AfterClass(description = 'close your firefox driver') public void afterclass(){ driver.close(); }
# 4)@BeforeMethod ve @AfterMethod
İçinde @Evleneceksen açıklamalı yöntem, test yönteminizi çalıştırmadan önce veritabanı bağlantısını kontrol edebilirsiniz. @AfterMethod açıklamalı yöntem, veri tabanı bağlantınızı kapatabilirsiniz
Misal :
@BeforeMethod(description='connect to database') public void beforemethod() throws SQLException{ //check database connection is up String databaseurl = 'jdbc:oracle://192.168.1.258/myDB'; DriverManager.getConnection(databaseurl, 'username', 'password'); }
@AfterMethod(description='close database connection') public void aftermethod() throws SQLException{ //check database connection is closed String databaseurl = 'jdbc:oracle://192.168.1.258/myDB'; Connection connect = DriverManager.getConnection(databaseurl, 'username', 'password'); if(connect!=null) connect.close(); }
# 5)@BeforeTest ve @AfterTest
İçinde @Evleneceksen yöntem, firefox profil tercihlerinizi ayarlayabilir ve @FterTest yöntem, test sonucunu oluşturacak bir kod koyabilir ve bunu pay sahiplerine postalayabilirsiniz.
Misal :
@BeforeTest (description='set your firefox profile preferences according to your project requirement') public void single_run(){ FirefoxProfile firefoxProfile = new FirefoxProfile(); firefoxProfile.setPreference ('browser.download.folderList',2); firefoxProfile.setPreference ('browser.download.manager.showWhenStarting',false); firefoxProfile.setPreference ('browser.download.dir','E:\reports\'); firefoxProfile.setPreference ('browser.helperApps.neverAsk.saveToDisk','csv'); driver = new FirefoxDriver(firefoxProfile); String baseUrl = 'www.gmail.com'; } @AfterTest (description='') public void teardown(){ //a code which will send the test details report }
Ek açıklamalarla çalışırken burada dikkat edilmesi gereken en önemli husus, sisteminizin Java 1.5 sürümü veya üstü ile donatılmış olması gerektiğidir, aksi takdirde Eclipse, ek açıklamaların sisteminizde desteklenmediğine dair bir hata gösterebilir.
Şimdi, sisteminizin ek açıklamalar için gerekli Java sürümüne sahip olduğu ancak hatanın hala göründüğü bir durumu düşünün.
Aşağıdaki gibi bir şey:
Sözdizimi hatası, ek açıklamalar yalnızca kaynak düzeyi 1.5 veya daha büyükse kullanılabilir.
Şimdi ne yapacaksın? Var Bu durumu düzeltmek için üç seçenek.
Tek tek inceleyelim:
Seçenek 1:
- Eclipse'e gidin ve projenize sağ tıklayın
- Özellikleri seçin
- Java Derleyicisine tıklayın
- Derleyici Uyum Düzeyinizin 1.5 veya daha yüksek olduğundan emin olun
- Ayarları kaydedin ve sorununuz çözüldü
Seçenek 2:
- Eclipse'te Pencere Sekmesine Git
- Tercihleri Seçin
- Java'ya ve ardından Derleyici'ye tıklayın
- Derleyici Uyum Düzeyinizin 1.5 veya daha yüksek olduğundan emin olun
- Ayarları kaydedin ve sorununuz çözüldü
3. Seçenek:
Doğru Java ortamı yol değişkenini ayarlayarak Java Ana Yolunuzu kontrol edin.
Sonuç:
Bu makale aracılığıyla, test uzmanları tarafından sıklıkla kullanılan bazı önemli ek açıklamaları ve özellikleri tartışmaya çalıştık. Ancak, TestNG'de sık kullanılmayan daha fazla ek açıklama vardır. @AfterGroups, @BeforeGroups proje test komut dosyanızda gruplarla çalışırken hangileri kullanılır.
Bu nedenle, yukarıdaki ek açıklamaları gereksinimlerinize göre kullanın. Proje kurulumunuzu test yönteminde yapmamanız her zaman tavsiye edilir. Test yönteminde, test edilecek temel iş mantığını yazın.
c ++ sınıf işlevine tanımsız başvuru
Sisteminizin Java 1.5 veya daha yüksek sürümlerle donatıldığından emin olun, aksi takdirde Eclipse, ek açıklamaların sisteminizde desteklenmediğini belirten bir hata gösterebilir.
Umarım bu makale TestNG ek açıklamalarında size yardımcı olur. Lütfen herhangi bir yorum veya sorunuz olması durumunda bize bildirin.
Önerilen Kaynaklar
- Selenium Komut Dosyaları Oluşturmak için TestNG Framework Nasıl Kullanılır - TestNG Selenium Tutorial # 12
- Selenyum Örneklerle Metin Eğitimi ile Eleman Bul
- 30+ En İyi Selenyum Öğreticisi: Gerçek Örneklerle Selenyum Öğrenin
- Salatalık Selenium Eğitimi: Salatalık Java Selenium WebDriver Entegrasyonu
- Selenium WebDriver'a Giriş - Selenium Eğitimi # 8
- Etkili Selenium Komut Dosyası Oluşturma ve Sorun Giderme Senaryoları - Selenium Eğitimi # 27
- Günlüklerle Selenium Komut Dosyalarında Hata Ayıklama (Log4j Eğitimi) - Selenium Eğitimi # 26
- Örneklerle Python DateTime Eğitimi