TestNG le permite ejecutar métodos de prueba, clases de prueba y casos de prueba en paralelo dentro de su proyecto. Al realizar la ejecución en paralelo, podemos reducir el 'tiempo de ejecución' ya que las pruebas se inician y ejecutan simultáneamente en diferentes subprocesos.
Aquí veremos cómo ejecutar múltiples clases (también conocidas como suites diferentes) usando TestNG.
Paso 1) Crear un archivo TestNG.xml para ejecutar la prueba
Para hacer eso, siga los pasos a continuación.
- Crea un nuevo proyecto en eclipse
- Cree dos paquetes en los proyectos (nómbrelos como com.suite1 y com.suite2)
- Cree una clase en cada paquete (nómbrelos como Flipkart.java y Snapdeal.java) y copie el siguiente código en las clases respectivas
- Cree un nuevo archivo en su proyecto y asígnele el nombre testng.xml (asegúrese de haber instalado el complemento de prueba para eclipse, las instrucciones están disponibles aquí). Testng.xml contiene toda la configuración (nombres de clase, nombres de prueba y nombres de traje.
Flipkart.java
paquete com.suite1;import java.util.concurrent.TimeUnit;import org.openqa.selenium.Alert;import org.openqa.selenium.By;importar org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;importar org.openqa.selenium.firefox.FirefoxDriver;importar org.openqa.selenium.interactions.Actions;import org.testng.annotations.AfterClass;import org.testng.annotations.BeforeClass;import org.testng.annotations.Test;Flipkart de clase pública {Controlador WebDriver = nuevo FirefoxDriver ();String username = ""; // Cambie a su nombre de usuario y contraseñaString contraseña = "";// Este método es navegar por la URL de flipkart@Antes de clasepublic void init () {driver.manage (). window (). maximizar ();driver.manage (). timeouts (). implicitlyWait (60, TimeUnit.SECONDS);driver.navigate (). to ("https://www.flipkart.com");}// Para iniciar sesión en flipkart@Pruebainicio de sesión vacío público () {driver.findElement (By.partialLinkText ("Iniciar sesión")). click ();driver.findElement (By.cssSelector (". Fk-input.login-form-input.user-email")).sendKeys (nombre de usuario);driver.findElement (By.cssSelector (". Fk-input.login-form-input.user-pwd")).sendKeys (contraseña);driver.findElement (By.cssSelector (". submit-btn.login-btn.btn")). click ();}// Buscar producto@Pruebapublic void searchAndSelectProduct () {driver.findElement (By.id ("fk-top-search-box")). sendKeys ("moto g3");driver.findElement (By.cssSelector ("barra de búsqueda-enviar.fk-fuente-13.fk-fuente-negrita")).hacer clic();// seleccione el primer elemento en los resultados de la búsquedaString css = ".gd-row.browse-grid-row: n-ésimo-de-tipo (1)> div: n-hijo (1)> div> div: n-hijo (2)> div> a";driver.findElement (By.cssSelector (css)). click ();}@Pruebapublic void buyAndRemoveFromCart () {driver.findElement (By.cssSelector (". Btn-express-checkout.btn-big.current")).hacer clic();driver.findElement (By.cssSelector (". remove.fk-inline-block")). click ();Alerta a = driver.switchTo (). Alert ();a.accept ();}@Pruebacierre de sesión vacío público () {Acciones s = nuevas acciones (conductor);Usuario de WebElement = driver.findElement (By.partialLinkText (nombre de usuario));s.moveToElement (usuario) .build (). perform ();driver.findElement (By.linkText ("Cerrar sesión")). click ();}@Después de clasespublic void quit () {driver.close ();}}
SnapDeal.java
paquete com.suite2;import java.util.concurrent.TimeUnit;import org.openqa.selenium.Alert;import org.openqa.selenium.By;importar org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;importar org.openqa.selenium.firefox.FirefoxDriver;importar org.openqa.selenium.interactions.Actions;import org.testng.annotations.AfterClass;import org.testng.annotations.BeforeClass;import org.testng.annotations.Test;SnapDeal de clase pública {Controlador WebDriver = nuevo FirefoxDriver ();String username = ""; // Cambie a su nombre de usuario y contraseñaString contraseña = "";String pinCode = "";// Este método es navegar por la URL de snapdeal@Antes de clasepublic void init () {driver.manage (). window (). maximizar ();driver.manage (). timeouts (). implicitlyWait (60, TimeUnit.SECONDS);driver.navigate (). to ("https://www.snapdeal.com");}// Para iniciar sesión en flipkart@Pruebainicio de sesión vacío público () {driver.findElement (By.xpath ("// botón [texto () = 'Iniciar sesión']")). click ();driver.switchTo (). frame ("loginIframe");driver.findElement (By.cssSelector ("div [onClick = 'getLoginForm ()']")).hacer clic();driver.findElement (By.id ("j_username")). sendKeys (nombre de usuario);driver.findElement (By.id ("j_password_login")). sendKeys (contraseña);driver.findElement (By.id ("signin_submit")). click ();driver.switchTo (). defaultContent ();}// Buscar producto@Pruebapublic void searchAndSelectProduct () {driver.findElement (By.cssSelector (". col-xs-20.searchformInput.keyword")).sendKeys ("iphone 6s");driver.findElement (By.cssSelector (". sd-icon.sd-icon-search")). click ();// seleccione el primer elemento en los resultados de la búsquedaString css = ".product_grid_row: n-ésimo-de-tipo (1)> div: n-hijo (1)";driver.findElement (By.cssSelector (css)). click ();}@Pruebapublic void buyAndRemoveFromCart () {driver.findElement (By.xpath ("// li [contiene (texto (), 'Plata')]")). click ();driver.findElement (By.id ("comprobación de código PIN")). sendKeys (código PIN);driver.findElement (By.id ("id-botón-comprar")). click ();driver.findElement (By.cssSelector ("i [título = 'Eliminar elemento']")). click ();Alerta a = driver.switchTo (). Alert ();a.accept ();}@Pruebacierre de sesión vacío público () {driver.findElement (By.linkText ("EMPEZAR A COMPRAR AHORA")). click ();Acciones s = nuevas acciones (conductor);WebElement user = driver.findElement (By.cssSelector (". Sd-icon.sd-icon-user"));s.moveToElement (usuario) .build (). perform ();driver.findElement (By.linkText ("Cerrar sesión")). click ();}@Después de clasespublic void quit () {driver.close ();}}
TestNg.xml
La estructura final del proyecto se ve a continuación,
Paso 2) Ejecución en paralelo en TestNG
Después de crear el archivo xml como se muestra arriba, en el siguiente paso, ejecutaremos la prueba paralela. A continuación se muestra el código.
1) número de subprocesos : se utiliza para la ejecución en paralelo, según el script numérico. Se ejecutará en orden paralelo o secuencial.
2) detallado : se utiliza para registrar los detalles de ejecución en la consola. El valor debe ser de 1 a 10. Los detalles del registro en la ventana de la consola se volverán más detallados y claros a medida que aumente el valor del atributo detallado en el archivo de configuración testng.xml.
3) nombre : Nombre de la suite. Aquí está "Gmail Suite"
4) Paralelo : para ejecutar scripts en paralelo, el valor puede ser pruebas / clases / métodos / conjuntos. El valor predeterminado es ninguno
Haga clic derecho en testng.xml y seleccione ejecutar como prueba, una vez que tenga éxito, verá todos los resultados
Cuando ejecute el código anterior, obtendrá el siguiente resultado.
Producción:
1) nombre de la suite dado en testng.xml
2) nombre de la prueba dada en testng.xml
3) nombre de la clase dada en testng.xml
4) nombres de métodos anotados con @Test en el archivo .java
Del mismo modo, también ejecutará el conjunto de pruebas para acuerdos instantáneos.
Conclusión:
Aquí hemos visto en el ejemplo anterior cómo usar Testng para ejecutar una prueba en paralelo. TestNG ofrece la opción de ejecutar varias pruebas en paralelo en un solo archivo de configuración (XML).