Perdamaian, tenaga kerja, Mei, warga Khabrovsk! Bagi mereka yang, seperti kita, memasuki minggu kerja antar-liburan, kami telah menyiapkan terjemahan yang kami ingin bertepatan dengan dimulainya pendaftaran untuk kursus
Java QA Engineer , yang dijadwalkan akan diluncurkan pada 28 Mei.
TestNG adalah kerangka uji yang dibuat oleh Cédric Beust yang membantu kami memenuhi banyak kebutuhan pengujian kami. TestNG banyak digunakan dengan Selenium. Ingin tahu apa arti NG? Ini berarti
"Generasi Selanjutnya" . TestNG mirip dengan JUnit, tetapi lebih kuat ketika datang untuk mengendalikan aliran program Anda. Arsitektur kerangka kerja membantu kami membuat pengujian lebih terstruktur dan memberikan poin validasi yang lebih baik.
Beberapa fitur TestNG yang patut mendapat perhatian:
- Anotasi yang kuat dan beragam untuk mendukung kasus pengujian Anda.
- Menjalankan tes secara paralel, menggunakan dependensi antar tes.
- Fleksibilitas untuk menjalankan tes Anda pada set data yang berbeda, melalui file TestNG.xml atau melalui konsep penyedia data.
- Pengelompokan dan penentuan prioritas kasus uji.
- Pembuatan laporan HTML, kustomisasi menggunakan berbagai plugin.
- Pembuatan log eksekusi uji.
- Integrasi yang mudah dengan Eclipse, Maven, Jenkins, dll.
Biasanya, proses pengujian menggunakan TestNG mencakup langkah-langkah berikut:

Sebelum beralih ke anotasi TestNG untuk Selenium, kami menguraikan prasyarat untuk menyiapkan TestNG.
Prasyarat:
- Kit pengembangan Java
- Eclipse atau IDE lainnya
- Diinstal TestNG di Eclipse atau di IDE Anda
Catatan: Anotasi Java hanya dapat digunakan dengan Java versi 1.5 dan lebih tinggi.
Jika Anda baru menggunakan TestNG, lihat artikel tentang cara menjalankan
skrip otomatisasi pertama dengan TestNG .
Jadi apa yang dimaksud dengan anotasi?Anotasi adalah label yang memberikan informasi tambahan tentang kelas atau metode ( Catatan Penerjemah: anotasi dalam java dapat diterapkan tidak hanya untuk kelas dan metode, tetapi juga ke elemen lain ). Untuk anotasi, awalan "@" digunakan. TestNG menggunakan anotasi untuk membantu menciptakan kerangka uji yang kuat. Mari kita lihat anotasi TestNG yang digunakan untuk mengotomatisasi pengujian dengan Selenium.
@Test
Ini adalah anotasi terpenting dalam TestNG, yang berisi logika utama dari tes ini . Semua fungsi otomatis dalam metode dengan penjelasan
@Test
. Ini memiliki berbagai atribut yang dengannya metode peluncuran dapat dikonfigurasi.
Kode contoh di bawah memeriksa transisi url:
@Test public void testCurrentUrl() throws InterruptedException { driver.findElement(By.xpath("//*[@id='app']/header/aside/ul/li[4]/a")) .click(); String currentUrl = driver.getCurrentUrl(); assertEquals( currentUrl, "https://automation.lambdatest.com/timeline/?viewType=build&page=1", "url did not matched"); }
@BeforeTest
Metode dengan anotasi ini dijalankan sebelum metode pertama dijalankan dengan anotasi @Test
. (Catatan Penerjemah: sebagai bagian dari pengujian yang ditentukan di bagian test
file konfigurasi xml) . Anda dapat menggunakan anotasi ini di TestNG dengan Selenium untuk mengonfigurasi browser Anda. Misalnya, luncurkan browser dan perluas layar penuh, atur pengaturan browser tertentu, dll.
Di bawah ini adalah contoh untuk BeforeTest, di mana browser diperluas ke layar penuh:
@BeforeTest public void profileSetup() { driver.manage().window().maximize(); }
@AfterTest
Metode yang ditandai dengan anotasi ini dijalankan setelah semua metode pengujian @Test
. (
Catatan Penerjemah: sebagai bagian dari tes yang ditentukan di bagian test
dalam file konfigurasi xml, "kelas saat ini" tidak ditulis dengan benar dalam aslinya ). Ini adalah anotasi yang berguna yang berguna untuk memberikan hasil tes. Anda dapat menggunakan anotasi ini untuk membuat laporan tentang tes Anda dan mengirimkannya ke pihak yang berminat.
Contoh kode:
@AfterTest public void reportReady() { System.out.println("Report is ready to be shared, with screenshots of tests"); }
@BeforeMethod
Metode dengan anotasi ini dijalankan sebelum setiap metode @Test
. Anda dapat menggunakannya untuk menguji koneksi ke database sebelum menjalankan tes. Atau, misalnya, saat menguji fungsionalitas yang bergantung pada login pengguna, masukkan kode untuk masuk ke sistem di sini.
Berikut ini adalah cuplikan kode yang menunjukkan masuknya LambdaTest:
@BeforeMethod public void checkLogin() { driver.get("https://accounts.lambdatest.com/login"); driver.findElement(By.xpath("//input[@name='email']")).sendKeys("sadhvisingh24@gmail.com"); driver.findElement(By.xpath("//input[@name='password']")).sendKeys("activa9049"); driver.findElement(By.xpath("//*[@id='app']/section/form/div/div/button")).click(); }
@AfterMethod
Metode dengan anotasi ini diluncurkan setelah setiap metode @Test
. Anda dapat menggunakan anotasi ini untuk mengambil tangkapan layar setiap kali Anda menjalankan tes.
Berikut ini adalah cuplikan kode yang menunjukkan cara mengambil tangkapan layar:
@AfterMethod public void screenShot() throws IOException { TakesScreenshot scr = ((TakesScreenshot) driver); File file1 = scr.getScreenshotAs(OutputType.FILE); FileUtils.copyFile(file1, new File(":\\test-output\\test1.PNG")); }
@BeforeClass
Metode dengan anotasi ini akan dijalankan sebelum metode pengujian pertama di kelas saat ini. Anda dapat menggunakan anotasi ini untuk mengonfigurasi properti browser, menginisialisasi driver, membuka browser dengan URL yang diinginkan, dll.
Kode contoh untuk BeforeClass:
@BeforeClass public void appSetup() { driver.get(url); }
@AfterClass
Metode dengan anotasi ini akan dijalankan setelah metode tes terakhir di kelas saat ini. Anotasi dalam TestNG ini dapat digunakan untuk melakukan tindakan untuk membersihkan sumber daya setelah tes selesai, seperti menutup driver, dll.
Berikut ini adalah contoh cuplikan kode yang menunjukkan penutupan driver:
@AfterClass public void closeUp() { driver.close(); }
@BeforeSuite
Test suite (suite) dapat terdiri dari beberapa kelas, anotasi ini dijalankan sebelum semua metode pengujian semua kelas.
Anotasi ini menandai titik masuk pada saat startup. @BeforeSuite
di TestNG dapat digunakan untuk melakukan fungsi umum, seperti mengatur dan menjalankan Selenium atau driver web jarak jauh, dll.
Contoh penjelasan
@BeforeSuite
di TestNG yang menunjukkan pengaturan driver:
@BeforeSuite public void setUp() { System.setProperty( "webdriver.chrome.driver", ":\\selenium\\chromedriver.exe"); driver = new ChromeDriver(); }
@AfterSuite
Anotasi dalam TestNG ini dimulai setelah semua metode pengujian di semua kelas telah dijalankan. Anotasi ini dapat digunakan untuk membersihkan sebelum menyelesaikan tes saat Anda menggunakan beberapa kelas, misalnya, menutup driver, dll.
Berikut ini cuplikan kode untuk anotasi
@AfterSuite
di TestNG untuk Selenium:
@AfterSuite public void cleanUp() { System.out.println("All close up activities completed"); }
@BeforeGroups
TestNG dapat mengelompokkan tes bersama-sama menggunakan atribut grup dalam penjelasan
@Test
. Misalnya, jika Anda ingin semua fungsi serupa yang terkait dengan manajemen pengguna digabungkan bersama, Anda dapat menandai tes, seperti dasbor (panel pengguna), profil (profil), transaksi (transaksi) dan sejenisnya, dalam satu grup, seperti manajemen pengguna.
@BeforeGroups
di TestNG membantu meluncurkan tindakan tertentu di depan kelompok uji yang ditentukan. Anotasi ini dapat digunakan jika grup berfokus pada satu fungsi, seperti ditunjukkan dalam contoh di atas.
@BeforeGroup
dapat berisi fungsi login yang diperlukan untuk menjalankan tes dalam grup, misalnya, menguji panel pengguna, profil pengguna, dll.
Contoh menggunakan
@BeforeGroups
:
@BeforeGroups("urlValidation") public void setUpSecurity() { System.out.println("url validation test starting"); }
@AfterGroups
Anotasi ini diluncurkan setelah semua metode pengujian dari grup yang ditentukan telah dieksekusi.Kode contoh untuk anotasi
@AfterGroups
di TestNG for Selenium:
@AfterGroups("urlValidation") public void tearDownSecurity() { System.out.println("url validation test finished"); }
ContohKode di bawah ini menunjukkan contoh penggunaan semua penjelasan yang dibahas di atas:
import org.apache.commons.io.FileUtils; import org.openqa.selenium.By; import org.openqa.selenium.OutputType; import org.openqa.selenium.TakesScreenshot; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.testng.annotations.*; import java.io.File; import java.io.IOException; import java.util.concurrent.TimeUnit; import static org.testng.Assert.assertEquals; public class AnnotationsTestNG { private WebDriver driver; private String url = "https://www.lambdatest.com/"; @BeforeSuite public void setUp() { System.setProperty( "webdriver.chrome.driver", ":\\selenium\\chromedriver.exe"); driver = new ChromeDriver(); driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); System.out.println("The setup process is completed"); } @BeforeTest public void profileSetup() { driver.manage().window().maximize(); System.out.println("The profile setup process is completed"); } @BeforeClass public void appSetup() { driver.get(url); System.out.println("The app setup process is completed"); } @BeforeMethod public void checkLogin() { driver.get("https://accounts.lambdatest.com/login"); driver.findElement(By.xpath("//input[@name='email']")).sendKeys("sadhvisingh24@gmail.com"); driver.findElement(By.xpath("//input[@name='password']")).sendKeys("activa9049"); driver.findElement(By.xpath("//*[@id='app']/section/form/div/div/button")).click(); System.out.println("The login process on lamdatest is completed"); } @Test(groups = "urlValidation") public void testCurrentUrl() throws InterruptedException { driver.findElement(By.xpath("//*[@id='app']/header/aside/ul/li[4]/a")).click(); Thread.sleep(6000); String currentUrl = driver.getCurrentUrl(); assertEquals(currentUrl, "https://automation.lambdatest.com/timeline/?viewType=build&page=1", "url did not matched"); System.out.println("The url validation test is completed"); } @AfterMethod public void screenShot() throws IOException { TakesScreenshot scr = ((TakesScreenshot) driver); File file1 = scr.getScreenshotAs(OutputType.FILE); FileUtils.copyFile(file1, new File(":\\test-output\\test1.PNG")); System.out.println("Screenshot of the test is taken"); } @AfterClass public void closeUp() { driver.close(); System.out.println("The close_up process is completed"); } @AfterTest public void reportReady() { System.out.println("Report is ready to be shared, with screenshots of tests"); } @AfterSuite public void cleanUp() { System.out.println("All close up activities completed"); } @BeforeGroups("urlValidation") public void setUpSecurity() { System.out.println("url validation test starting"); } @AfterGroups("urlValidation") public void tearDownSecurity() { System.out.println("url validation test finished"); } }
Laporan TestNG:
Output konsol:
Catatan Penerjemah:
- untuk menjalankan tes, ubah path ke chromedriver.exe dalam metode setUp (), dan path ke folder screenshot di metode screenShot (). Selain itu, untuk pelaksanaan pengujian yang berhasil, metode checkLogin () harus memiliki nama pengguna dan kata sandi yang valid.
- Ketergantungan maven yang digunakan:
<dependencies> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.14.3</version> <scope>test</scope> </dependency> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-chrome-driver</artifactId> <version>3.141.59</version> <scope>test</scope> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.6</version> <scope>test</scope> </dependency> </dependencies>
Urutan anotasi TestNG untuk SeleniumAnotasi yang dijelaskan di atas dilakukan dalam runtime dengan urutan sebagai berikut:
- Beforesuite
- Beetetest
- Beforeclass
- Sebelum Kelompok
- Sebelum metode
- Tes
- Metode setelah
- Aftergroups
- Kelas Akhir
- Aftertest
- Aftersuite
Berikut urutan eksekusi mereka:
Atribut yang digunakan dengan anotasi di TestNGAnotasi di TestNG memiliki atribut yang dapat Anda gunakan untuk menyesuaikan. Mereka membantu mengatur urutan pelaksanaan metode pengujian.
Atribut-atribut ini adalah:
- deskripsi : Anda dapat menentukan deskripsi metode pengujian.
Misalnya, @Test
(deskripsi = "tes ini memeriksa login"). - alwaysRun : atribut ini memastikan bahwa metode pengujian akan selalu dieksekusi, bahkan jika tes yang bergantung itu dibatalkan. Ketika nilai atribut benar, metode ini akan selalu berjalan.
Misalnya, @Test (alwaysRun = true). - dataProvider : menetapkan nama penyedia data untuk metode pengujian. Misalkan Anda akan menjalankan pengujian di beberapa browser, lalu dalam metode pengujian dengan atribut dataProvider, Anda dapat menambahkan parameter untuk browser dan versinya, yang akan diteruskan ke metode oleh penyedia data. Dalam hal ini, tes yang mengandung atribut ini akan menggunakan input ini untuk menjalankan tes di beberapa browser.
Sebagai contoh, @Test (dataProvider = "cross-browser-testing"). - dependOnMethods : memberikan informasi tentang urutan pengujian yang dijalankan. Tes dengan atribut ini akan dieksekusi hanya jika tes yang bergantung padanya berhasil. Jika tes yang bergantung pada metode jatuh, maka tes tidak dimulai.
Misalnya, @Test (depenOnmethod = “login”). - grup : membantu mengelompokkan metode pengujian yang difokuskan pada satu fungsi menjadi satu kelompok.
Misalnya, @Test
(groups = ”Payment_Module”).
Atribut ini juga memungkinkan Anda mengontrol tes mana yang akan dijalankan. Saat menjalankan tes, Anda dapat mengabaikan beberapa grup atau, sebaliknya, hanya menjalankan beberapa grup. Yang perlu Anda lakukan adalah menentukan grup yang diperlukan dalam file TestNG.xml. Di tag include
, tentukan grup yang ingin Anda jalankan, dan dalam tag exclude
yang ingin Anda abaikan. - dependOnGroups : melakukan fungsi dua atribut yang disebutkan di atas, yaitu menentukan ketergantungan metode pengujian pada grup yang ditentukan. Metode pengujian ini akan diluncurkan hanya setelah kelompok tes yang ditentukan selesai.
Misalnya, @Test (depenOnMethods = "Payment_Module"). - prioritas : membantu kami memprioritaskan metode pengujian. Ketika TestNG menjalankan metode pengujian, ia dapat melakukannya dalam urutan acak. Dalam skenario di mana Anda ingin tes Anda berjalan dalam urutan yang benar, Anda dapat menggunakan atribut prioritas. Prioritas default untuk semua metode pengujian adalah 0. Pertama, pengujian dijalankan dengan nilai prioritas lebih rendah.
Misalnya, @Test
(prioritas = 1), @Test
(prioritas = 2). Dalam hal ini, tes dengan prioritas sama dengan satu akan dieksekusi terlebih dahulu, dan kemudian tes dengan prioritas dua. - diaktifkan : atribut ini digunakan ketika Anda perlu mengabaikan dan tidak menjalankan tes tertentu. Yang harus Anda lakukan adalah menjadikannya false.
Misalnya, @Test
(diaktifkan = salah). - batas waktu : menentukan waktu untuk menyelesaikan tes. Jika pelaksanaan tes melebihi waktu yang ditentukan oleh atribut, maka tes akan gagal dengan pengecualian melempar org.testng.internal.thread.ThreadTimeoutException
Misalnya, @Test (timeOut = 500). Harap dicatat bahwa waktu ditunjukkan dalam milidetik . - invocationCount : berfungsi seperti loop. Tes akan berjalan sebanyak yang ditentukan dalam invokasiCount.
Misalnya, @Test
(invocationCount = 5) akan dijalankan 5 kali. - invocationTimeOut : digunakan bersama dengan atribut invocationCount di atas. Nilai dari atribut ini bersama-sama dengan invocationCount menunjukkan bahwa tes akan dijalankan sebanyak yang ditentukan dalam invocationCount, dan selama waktu yang ditentukan dalam atribut invocationTimeOut.
Misalnya, @Test
(invocationCount = 5, invocationTimeOut = 20). - expectedExceptions : Membantu menangani pengecualian yang diharapkan akan dilemparkan ke metode pengujian. Jika pengecualian yang ditentukan dalam atribut dilemparkan oleh metode pengujian, maka tes berhasil. Jika tidak, tidak adanya pengecualian atau melempar pengecualian lain yang tidak ditentukan dalam atribut akan gagal dalam pengujian.
Sebagai contoh, @Test
(diharapkanExceptions = {ArithmeticException.class}).
Di atas adalah atribut yang digunakan dengan anotasi di TestNG dengan Selenium. Berikut ini adalah cuplikan kode yang menunjukkan penggunaan atribut di atas:
import static org.testng.Assert.assertEquals; import java.io.File; import java.io.IOException; import org.apache.commons.io.FileUtils; import org.openqa.selenium.By; import org.openqa.selenium.OutputType; import org.openqa.selenium.TakesScreenshot; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.testng.annotations.AfterClass; import org.testng.annotations.AfterGroups; import org.testng.annotations.AfterMethod; import org.testng.annotations.AfterSuite; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeGroups; import org.testng.annotations.BeforeSuite; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; public class AnnotationsTest { private WebDriver driver; private String url = "https://www.lambdatest.com/"; @BeforeSuite public void setUp() { System.setProperty( "webdriver.chrome.driver", ":\\selenium\\chromedriver.exe"); driver = new ChromeDriver(); System.out.println("The setup process is completed"); } @BeforeTest public void profileSetup() { driver.manage().window().maximize(); System.out.println("The profile setup process is completed"); } @BeforeClass public void appSetup() { driver.get(url); System.out.println("The app setup process is completed"); } @Test(priority = 2) public void checkLogin() { driver.get("https://accounts.lambdatest.com/login"); driver.findElement(By.xpath("//input[@name='email']")).sendKeys("sadhvisingh24@gmail.com"); driver.findElement(By.xpath("//input[@name='password']")).sendKeys("xxxxx"); driver.findElement(By.xpath("//*[@id='app']/section/form/div/div/button")).click(); System.out.println("The login process on lamdatest is completed"); } @Test(priority = 0, description = "this test validates the sign-up test") public void signUp() throws InterruptedException { WebElement link = driver.findElement(By.xpath("//a[text()='Free Sign Up']")); link.click(); WebElement organization = driver.findElement(By.xpath("//input[@name='organization_name']")); organization.sendKeys("LambdaTest"); WebElement firstName = driver.findElement(By.xpath("//input[@name='name']")); firstName.sendKeys("Test"); WebElement email = driver.findElement(By.xpath("//input[@name='email']")); email.sendKeys("User622@gmail.com"); WebElement password = driver.findElement(By.xpath("//input[@name='password']")); password.sendKeys("TestUser123"); WebElement phoneNumber = driver.findElement(By.xpath("//input[@name='phone']")); phoneNumber.sendKeys("9412262090"); WebElement termsOfService = driver.findElement(By.xpath("//input[@name='terms_of_service']")); termsOfService.click(); WebElement button = driver.findElement(By.xpath("//button[text()='Signup']")); button.click(); } @Test(priority = 3, alwaysRun = true, dependsOnMethods = "check_login", description = "this test validates the URL post logging in", groups = "url_validation") public void testCurrentUrl() throws InterruptedException { driver.findElement(By.xpath("//*[@id='app']/header/aside/ul/li[4]/a")).click(); String currentUrl = driver.getCurrentUrl(); assertEquals( currentUrl, "https://automation.lambdatest.com/timeline/?viewType=build&page=1", "url did not matched"); System.out.println("The url validation test is completed"); } @Test(priority = 1, description = "this test validates the logout functionality", timeOut = 25000) public void logout() throws InterruptedException { Thread.sleep(6500); driver.findElement(By.xpath("//*[@id='userName']")).click(); driver.findElement(By.xpath("//*[@id='navbarSupportedContent']/ul[2]/li/div/a[5]")).click(); } @Test(enabled = false) public void skipMethod() { System.out.println("this method will be skipped from the test run using the attribute enabled=false"); } @Test(priority = 6, invocationCount = 5, invocationTimeOut = 20) public void invocationcountShowCaseMethod() { System.out.println("this method will be executed by 5 times"); } @AfterMethod() public void screenshot() throws IOException { TakesScreenshot scr = ((TakesScreenshot) driver); File file1 = scr.getScreenshotAs(OutputType.FILE); FileUtils.copyFile(file1, new File(":\\test-output\\test1.PNG")); System.out.println("Screenshot of the test is taken"); } @AfterClass public void closeUp() { driver.close(); System.out.println("The close_up process is completed"); } @AfterTest public void reportReady() { System.out.println("Report is ready to be shared, with screenshots of tests"); } @AfterSuite public void cleanUp() { System.out.println("All close up activities completed"); } @BeforeGroups("urlValidation") public void setUpSecurity() { System.out.println("url validation test starting"); } @AfterGroups("urlValidation") public void tearDownSecurity() { System.out.println("url validation test finished"); } }
Output ke konsol:
Laporan TestNG:
Anotasi tambahan dalam TestNGAda beberapa penjelasan lebih berguna untuk membantu kita mencapai tujuan kita.
@DataProvider
Metode dengan anotasi ini digunakan untuk menyediakan data ke metode pengujian di mana atribut dataProvider diatur. Metode ini membantu dalam menciptakan tes yang digerakkan oleh data ke mana beberapa set nilai input dapat dilewati. Metode harus mengembalikan array atau objek dua dimensi.
Anotasi
@DataProvider
memiliki dua atribut:
- name - atribut ini digunakan untuk menunjukkan nama penyedia data. Jika tidak ditentukan, maka nama metode default digunakan.
- paralel - atribut ini memungkinkan Anda untuk menjalankan tes secara paralel dengan data yang berbeda. Memiliki atribut ini adalah salah satu keunggulan TestNG dibandingkan Junit. Standarnya salah.
Contoh di bawah ini menunjukkan penggunaan anotasi
@DataProvider
dengan nama yang diberikan dan atribut paralel.
@DataProvider(name = "SetEnvironment", parallel = true) public Object[][] getData() { Object[][] browserProperty = new Object[][]{ {Platform.WIN8, "chrome", "70.0"}, {Platform.WIN8, "chrome", "71.0"} }; return browserProperty; }
@Factory
Anotasi ini membantu menjalankan beberapa kelas uji melalui satu kelas uji. Sederhananya, itu mendefinisikan dan membuat tes secara dinamis.
Cuplikan kode di bawah ini menunjukkan penggunaan anotasi
@Factory
, yang membantu memanggil metode kelas pengujian.
import org.testng.annotations.Test; import org.testng.annotations.Factory; class FactorySimplyTest1 { @Test public void testMethod1() { System.out.println("This is to test for method 1 for Factor Annotation"); } } class FactorySimpleTest2 { @Test public void testMethod2() { System.out.println("This is to test for method 2 for Factor Annotation"); } } public class FactoryAnnotation { @Factory() @Test public Object[] getTestFactoryMethod() { Object[] factoryTest = new Object[2]; factoryTest[0] = new FactorySimplyTest1(); factoryTest[1] = new FactorySimpleTest2(); return factoryTest; } }
Output konsol:
@Parameters
Anotasi ini memungkinkan Anda meneruskan parameter ke pengujian Anda melalui file TestNG.xml. Ini berguna ketika Anda perlu mentransfer sejumlah data ke tes Anda. Untuk kumpulan data yang kompleks dan besar, yang terbaik adalah menggunakan
@DataProvider
atau anotasi Excel.
Contoh penggunaan:
@Parameters({"username", "password"}) @Test() public void checkLogin(String username, String password) { driver.get("https://accounts.lambdatest.com/login"); driver.findElement(By.xpath("//input[@name='email']")).sendKeys(username); driver.findElement(By.xpath("//input[@name='password']")).sendKeys(password); driver.findElement(By.xpath("//*[@id='app']/section/form/div/div/button")).click(); System.out.println("The login process on lamdatest is completed"); }
Dalam file TestNG.xml, parameter didefinisikan sebagai berikut:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="Suite"> <test thread-count="5" name="Annotations"> <parameter name="username" value="sadhvisingh24@gmail.com" /> <parameter name="password" value="XXXXX" /> <classes> <class name="Parameter_annotation"/> </classes> </test> <!-- Annotations --> </suite> <!-- Suite -->
@Listener
Anotasi ini membantu dalam pendataan dan pelaporan. Ada beberapa Pendengar:
- IExecutionListener
- IAnnotationTransformer
- ISuiteListener
- ITestListener
Tetapi kami akan meninggalkan deskripsi pendengar ini dan penggunaannya untuk artikel lain.
Itu saja!Poin kunci untuk dipertimbangkan ketika bekerja dengan semua anotasi dan atribut ini adalah bahwa Anda perlu menggunakan Java versi 1.5 atau lebih tinggi, karena anotasi tidak didukung di versi java yang lebih lama.
Semua anotasi dan atribut TestNG di atas membantu meningkatkan struktur kode dan keterbacaan. Ini membantu memberikan laporan terperinci, yang membuat laporan status lebih mudah dan lebih bermanfaat. Penggunaan anotasi ini di TestNG untuk Selenium sepenuhnya sesuai dengan kebutuhan bisnis Anda. Karena itu, memilih anotasi yang tepat dan menggunakannya dengan benar adalah penting. Anda dapat mencoba anotasi ini di
TestNG di LambdaTest Selenium Grid sekarang!
Mereka yang telah membaca sampai akhir diundang ke
webinar terbuka gratis, yang akan diadakan pada tanggal 14 Mei oleh guru kami,
Dmitry Eremin . Nah, sesuai dengan tradisi yang ada, kami menunggu komentar Anda, teman-teman.