Grupos en TestNG
โก Resumen inteligente
Grupos en TestNG Permite etiquetar los mรฉtodos de prueba con etiquetas lรณgicas y luego incluirlos o excluirlos mediante un conjunto de XML. Este enfoque simplifica las ejecuciones de pruebas de humo, regresiรณn y basadas en dependencias sin necesidad de reescribir el cรณdigo. Java cรณdigo.
TestNG es un marco de pruebas que cubre pruebas unitarias, funcionales, de extremo a extremo, de interfaz de usuario y de integraciรณn para Java de proyectos.
Puedes ejecutar un รบnico paquete o varios paquetes (un paquete encapsula clases relacionadas en una estructura de directorios definida) creando un conjunto XML y activรกndolo a travรฉs de Maven.
TestNG Grupos con ejemplo
Usted utiliza grupos en TestNG cuando:
- No es conveniente dispersar los mรฉtodos de prueba en muchas clases simplemente por รกrea funcional, y
- Desea omitir (no ejecutar) los casos de prueba seleccionados como si no estuvieran presentes en el cรณdigo fuente.
- Para lograr ambos objetivos, debes agrupar los mรฉtodos de forma lรณgica. TestNG Luego, respeta los filtros "incluir" y "excluir" declarados en el conjunto XML.
El fragmento que aparece a continuaciรณn muestra la sintaxis de etiquetado de grupos utilizada en un mรฉtodo de prueba.
Aquรญ se utilizan dos nombres de grupo, a saber: bonding y strong_tiesEstas son etiquetas lรณgicas que puedes renombrar para adaptarlas a tu proyecto.
El <groups> La etiqueta marca el inicio de los filtros de grupo dentro del conjunto XML.
A continuaciรณn, personaliza el XML para seleccionar un grupo especรญfico de las clases etiquetadas. El siguiente ejemplo muestra la sintaxis de declaraciรณn de grupo.
<puedes seguir>
<incluir nombre =โvรญnculoโ />
</puedes seguir>
</grupos>
Supongamos que una sola clase contiene 10 mรฉtodos de prueba.
De entre esos mรฉtodos:
- 6 mรฉtodos llevan el
bondinggrupo y - 4 mรฉtodos llevan el
strong_tiesgrupo.
A continuaciรณn, configura Maven y Java rutas y uso del Eclipse IDE para demostrar el uso de grupos a travรฉs de archivos XML dentro de un JavaProyecto basado en Maven.
Crear XML para TestNG con etiquetas
- El archivo XML (Lenguaje de Marcado Extensible) en el marco de trabajo Maven almacena la configuraciรณn para una o mรกs pruebas, declaradas dentro del </head>.
- Cada entrada de prueba estรก envuelta en un etiqueta y puede contener uno o mรกs TestNG clases.
- A Java clase con uno o mรกs @Prueba Las anotaciones en sus mรฉtodos se tratan como una TestNG clase.
Varias etiquetas aparecen en secuencia para construir un archivo testng.xml funcional, a saber: , , y .
- El La etiqueta contiene el nombre de nivel de suite utilizado en TestNG informes para resรบmenes de ejecuciรณn.
- El <test name=โGuru 99 Demostraciรณn de prueba de humoโ> La etiqueta contiene un nombre lรณgico para la prueba; el informe la utiliza para el recuento de pruebas aprobadas, fallidas y omitidas, ademรกs del tiempo total de ejecuciรณn y los metadatos del grupo.
- El La etiqueta apunta a la clase de prueba, donde
com.group.guru99es el paquete yTC_Class1es el nombre de la clase.
<!DOCTYPE suite LITE PARA TECHOS PLANOS โhttp://testng.org/testng-1.0.dtdโ>
<suite nombre ="Suite">
<compruรฉbalo nombre ="Guru Demostraciรณn de prueba de humo 99>
<grupos>
<puedes seguir>
<incluir nombre =โlazos fuertesโ />
</puedes seguir>
</grupos>
<privadas>
<clase nombre =โcom.group.guru99.TC_Class1โ />
</privadas>
</compruรฉbalo>
</suite>
Esta configuraciรณn XML se menciona en los tutoriales en vรญdeo de las siguientes secciones.
"excluir" o "incluir" en XML de prueba
Si el mecanismo de agrupaciรณn resulta engorroso para un filtro pequeรฑo, el conjunto de herramientas testng.xml tambiรฉn permite excluir o incluir mรฉtodos de prueba individuales por nombre.
Incluir etiqueta: Sintaxis para la etiqueta includeincluir nombre =โ${TEST_CASE_NAME}โ />
Nota: Puedes incluir o excluir varios casos de prueba en una sola ejecuciรณn, y la misma sintaxis se aplica a los filtros de grupo.
Uso de dependsOnGroups para la ejecuciรณn ordenada
Mรกs allรก de la simple inclusiรณn, TestNG permite que un grupo dependa de otro usando el dependsOnGroups atributo. El ejecutor garantiza que cada mรฉtodo del grupo padre finalice antes de que comience cualquier mรฉtodo dependiente, lo que mantiene la fiabilidad de las precondiciones.
- Primero inicia sesiรณn, luego realiza transacciones: Mรฉtodos de inicio de sesiรณn de etiquetas con
group = "auth"y pruebas de transferencia de etiquetas condependsOnGroups = {"auth"}Las pruebas de transferencia se ejecutan รบnicamente despuรฉs de que el inicio de sesiรณn sea exitoso. - Saltar en caso de fallo: Si falla un mรฉtodo en el grupo padre, TestNG En lugar de hacer que fallen directamente, marca los mรฉtodos dependientes como omitidos, lo que garantiza la veracidad de los informes.
- Combinar con alwaysRun: Los mรฉtodos de limpieza deben establecerse
alwaysRun = truePor lo tanto, el proceso de desmontaje continรบa ejecutรกndose incluso cuando falla un grupo anterior.
Este patrรณn es comรบn en conjuntos de pruebas integrales donde la configuraciรณn de la API debe completarse antes de que se inicien las aserciones de la interfaz de usuario.
Ejecutar TestNG Agrupar, incluir, excluir cรณdigo (demostraciรณn en vรญdeo)
A continuaciรณn se muestra un recorrido por el Java cรณdigo y el conjunto XML que impulsan el agrupar, excluir e incluir comportamiento.
Escenario de prueba: Inicie el GuruSitio web de banca de demostraciรณn 99, verifique algunos elementos en la pรกgina de inicio de sesiรณn, ingrese sus credenciales y vuelva a verificar algunos elementos en el panel de control despuรฉs de iniciar sesiรณn.
Nota: Cada paso reside en su propio mรฉtodo, pero en tiempo de ejecuciรณn el orden depende de las entradas en el conjunto XML.
- Mรฉtodo 1: Inicializa el navegador y ejecuta el URL (
tc01LaunchURL()). - Mรฉtodo 2: Verifique el encabezado de la pรกgina de inicio de sesiรณn (
tc02VerifyLaunchPage()). - Mรฉtodo 3: Introduzca su nombre de usuario y contraseรฑa en el formulario de inicio de sesiรณn (
tc03EnterCredentials()). - Mรฉtodo 4: Verifique la presencia del ID de administrador en el panel de usuario (
tc04VerifyLoggedInPage()). - Mรฉtodo 5: Verifique los enlaces adicionales en el panel de usuario (
tc05VerifyHyperlinks()).
Code para el escenario:
importar java.util.concurrent.TimeUnit;
importar org.openqa.selenium.By;
importar org.openqa.selenium.WebDriver;
importar org.openqa.selenium.firefox.FirefoxConductor;
importar org.testng.Assert;
importar org.testng.anotaciones.Prueba;
clase pรบblica TC_Clase1 {
final estรกtica pรบblica Controlador web webDriver = ยกnuevos Socios! de FirefoxDestornillador();
Cordรณn launchPageHeading = โ//h3[text()='Guru99 Banco']โ;
final Cordรณn elemento_nombre_usuario = โ//input[@name='uid']โ, elemento_de_contraseรฑa = โ//input[@name='password']โ,
elemento_de_inicio_de_sesiรณn = โ//input[@name='btnLogin']โ;
final Cordรณn valor_nombre_usuario = โmngr28642โ, valor_de_contraseรฑa = โydAnateโ;
final Cordรณn ID del gerente = โ//td[contiene(texto(),'ID del gerente')]โ;
final Cordรณn nuevoCliente = โ//a[@href='addcustomerpage.php']โ, transferencia de fondos = โ//a[@href='FundTransInput.php']โ;
/** Este caso de prueba inicializa el webDriver */
@Prueba(grupos = { โvรญnculoโ, โlazos fuertesโ })
vacรญo pรบblico tc01LaunchURL() {
webDriver.manage().window().maximize();
webDriver.manage().timeouts().implicitlyWait(20, Unidad de tiempo.SEGUNDOS);
webDriver.get(โhttps://www.demo.guru99.com/V4/โ);
}
/** Comprueba la presencia del encabezado en la pรกgina de inicio de sesiรณn */
@Prueba(grupos = { โvรญnculoโ })
vacรญo pรบblico tc02VerifyLaunchPage() {
Assert.assertTrue(webDriver.findElement(By.xpath(launchPageHeading)).isDisplayed(),
โEl encabezado de la pรกgina de inicio no se muestraโ);
System.out.println (Se muestra el encabezado de la pรกgina de inicio.);
}
/** Introduce el nombre de usuario y la contraseรฑa, y luego haz clic en Iniciar sesiรณn */
@Prueba(grupos = { โvรญnculoโ, โlazos fuertesโ })
vacรญo pรบblico tc03IngresarCredenciales() {
webDriver.findElement(By.xpath(userName_element)).sendKeys(userName_value);
webDriver.findElement(By.xpath(password_element)).sendKeys(password_value);
webDriver.findElement(By.xpath(signIn_element)).click();
}
/** Verifica el ID del administrador en el panel de control */
@Prueba(grupos = { โlazos fuertesโ })
vacรญo pรบblico tc04VerifyLoggedInPage() {
Assert.assertTrue(webDriver.findElement(By.xpath(managerID)).isDisplayed(),
โLa etiqueta de identificaciรณn del gerente no se muestraโ);
System.out.println (Se muestra la etiqueta de ID del gerente.);
}
/** Comprueba el enlace de Nuevo cliente y el enlace de Transferencia de fondos en el panel de control */
@Prueba(grupos = { โvรญnculoโ })
vacรญo pรบblico tc05VerificarHipervรญnculos() {
Assert.assertTrue(webDriver.findElement(By.xpath(newCustomer)).isEnabled(),
El enlace para nuevos clientes no se muestra.);
System.out.println (Se muestra el enlace para nuevos clientes.);
Assert.assertTrue(webDriver.findElement(By.xpath(fundTransfer)).isEnabled(),
El enlace para transferir fondos no se muestra.);
System.out.println (Se muestra el enlace de transferencia de fondos.);
}
}
Tenga en cuenta que las credenciales bancarias de demostraciรณn siguen siendo vรกlidas durante aproximadamente 20 dรญas, por lo que una ejecuciรณn local podrรญa mostrar un error de credenciales no vรกlidas una vez transcurrido ese plazo.
Explicaciรณn del cรณdigo:
Cinco mรฉtodos de prueba, uno por acciรณn, cada uno conlleva una groups Atributo en el @Test anotaciรณn.
Las dos etiquetas de grupo lรณgicas son strong_ties y bonding.
- El primer y el tercer mรฉtodo conllevan ambos
bondingystrong_ties, por lo que se ejecutan siempre que cualquiera de los grupos se incluya en el conjunto. Este es un patrรณn comรบn para los compartidos. caso de prueba pasos. - El segundo mรฉtodo estรก etiquetado รบnicamente con
bonding, por lo que solo se ejecuta cuando elbondingEl grupo estรก incluido. - El cuarto mรฉtodo estรก etiquetado รบnicamente con
strong_ties, por lo que solo se ejecuta cuando ese grupo estรก incluido. - El quinto mรฉtodo estรก etiquetado รบnicamente con
bonding, por lo que solo se ejecuta cuando elbondingEl grupo estรก incluido.
A continuaciรณn se presentan cuatro escenarios de ejecuciรณn:
Escenario 1: Ejecutar todos los mรฉtodos de prueba independientemente del grupo. Eliminar el <groups> Bloquear desde el XML en ejecuciรณn.
Escenario 2: Ejecutar รบnicamente los mรฉtodos vinculados a un grupo elegido, a saber: strong_ties or bondingConsulte el vรญdeo a continuaciรณn.
- En la primera parte del video, el
<groups>El bloque estรก comentado, por lo que se ejecutan todos los mรฉtodos de prueba. - En la segunda parte, se restablece el filtro de grupo y solo se ejecutan los mรฉtodos coincidentes.
Escenario 3: Aplique el filtro de exclusiรณn para omitir los casos de prueba seleccionados. Consulte el vรญdeo.
- La demostraciรณn excluye
tc02aparece por su nombre en el XML en ejecuciรณn, y el informe de resultados confirma que el mรฉtodo excluido no se ejecuta.
Escenario 4: Aplique el filtro de inclusiรณn para ejecutarlo รบnicamente. tc01LaunchURL, tc03EnterCredentials, y tc05VerifyHyperlinksConsulte el vรญdeo.
En esta ejecuciรณn, solo se ejecutan los mรฉtodos enumerados en el filtro de inclusiรณn, exactamente como estรกn configurados.
Descarga el proyecto de ejemplo desde el siguiente enlace.
Conclusiรณn
Grupos en TestNG aportar estructura a grandes Selenium y conjuntos de unidades reemplazando las divisiones de clases รบnicas con filtros XML declarativos.
Etiqueta tus mรฉtodos con @Test(groups = {...}), luego use <include>, <exclude>, y dependsOnGroups para impulsar pruebas de humo, regresiรณn y ejecuciones de extremo a extremo desde el mismo proyecto Maven en TestNG 7.x.


