TestNG es un marco de prueba que cubre diferentes tipos de diseños de prueba como una prueba unitaria, prueba funcional, prueba de extremo a extremo, prueba de interfaz de usuario y prueba de integración.
Puede ejecutar uno o varios casos de prueba en su código de Testng.
Si la prioridad de prueba no está definida mientras, al ejecutar varios casos de prueba, TestNG asigna a todos los @Test una prioridad como cero (0).
Ahora, mientras corre; las prioridades más bajas se programarán primero.
En este tutorial, aprenderá:
- Demostración del código TestNG sin prioridad
- Demostración del código TestNG sin prioridad en orden alfabético
- Cómo establecer la prioridad en TestNG
- Métodos con la misma prioridad
- Combinando métodos priorizados (que tienen la misma prioridad) y no priorizados
Demostración del código TestNG sin prioridad
Tomemos un escenario en el que se requerirá la secuenciación para aprobar todos los casos de prueba:
Escenario: Genere un código en el que se le solicite realizar una búsqueda en Google con una palabra clave específica, por ejemplo, "Facebook". Ahora, verifique que el título del navegador se haya cambiado a "Facebook - Búsqueda de Google".
Nota: Cada paso que codifique debe estar en métodos separados
Método 1 : Abra el navegador y diga Firefox (openBrowser ())
Método 2 : inicie Google.com (launchGoogle ())
Método 3 : Realice una búsqueda usando "Facebook" (performSearchAndClick1stLink ())
Método 4 : verificar el título de la página de búsqueda de Google (FaceBookPageTitleVerification ())
Código para nuestro escenario :
import org.openqa.selenium.By;importar org.openqa.selenium.WebDriver;importar org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations.Test;public class Priority_In_testNG {Controlador WebDriver;// Método 1: abre el navegador, di Firefox@Pruebapublic void openBrowser () {controlador = nuevo FirefoxDriver ();}// Método 2: Inicie Google.com@Pruebapublic void launchGoogle () {driver.get ("http://www.google.co.in");}// Método 3: realizar una búsqueda usando "Facebook"@Pruebapublic void peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Buscar']")). sendKeys ("Facebook");}// Método 4: verificar el título de la página de búsqueda de Google.@Pruebapublic void FaceBookPageTitleVerification () lanza Exception {driver.findElement (By.xpath (".//*[@ value = 'Buscar']")). click ();Hilo.sueño (3000);Assert.assertEquals (driver.getTitle (). Contains ("Facebook - Búsqueda de Google"), verdadero);}}
Explicación del código
Como se mencionó anteriormente, hemos creado 4 casos de prueba para realizar cada acción en métodos independientes.
- El primer método (openBrowser) indica inicializar el navegador Firefox.
- El segundo método (launchGoogle) indica que el lanzamiento de Google.com está en el navegador inicializado.
- El tercer método (peformSeachAndClick1stLink) establece que realizar una búsqueda en el cuadro de búsqueda (con xpath (".//*[@title='Search ']") con un término de búsqueda como Facebook y
- El cuarto y último método (FaceBookPageTitleVerification) establece que haga clic en el icono de búsqueda de Google y verifique que el título del navegador se haya cambiado a Facebook - Búsqueda de Google.
Ahora ejecute este código usando testNG como se muestra en el video, encontrará que todos los casos de prueba fallan. El motivo del error: dado que hay una dependencia del caso de prueba anterior para aprobar, solo se aprobará el caso de prueba en ejecución actual.
En este caso,
- El primer método que se ejecuta es openBrowser (). Se aprobó porque no tiene ninguna dependencia.
- El segundo método ejecutado es FaceBookPageTitleVerification (); está fallando porque estamos intentando hacer clic en el botón de búsqueda y verificando el título del navegador.
- Puede ver que si la actividad de búsqueda no es un proceso, entonces cómo se puede aprobar cualquier otro paso. Por lo tanto, esta es la razón por la que mis casos de prueba están fallando.
PASADO: openBrowserFALLIDO: FaceBookPageTitleVerificationFALLIDO: launchGoogleFALLIDO: peformSeachAndClick1stLink
Demostración del código TestNG sin prioridad en orden alfabético
Si no mencionamos ninguna prioridad, testng ejecutará los métodos @Test según el orden alfabético de los nombres de sus métodos, independientemente de su lugar de implementación en el código.
paquete com.guru.testngannotations;import org.testng.annotations.Test;clase pública TestNG_Priority_Annotations {@Pruebapublic void c_method () {System.out.println ("Estoy en el método C");}@Pruebapublic void b_method () {System.out.println ("Estoy en el método B");}@Pruebapublic void a_method () {System.out.println ("Estoy en el método A");}@Pruebapublic void e_method () {System.out.println ("Estoy en el método E");}@Pruebapublic void d_method () {System.out.println ("Estoy en el método D");}}
Producción
Estoy en el método AEstoy en el método BEstoy en el método CEstoy en el método DEstoy en el método E
Aunque definimos los métodos de manera aleatoria (c, b, a, e, d), testng ejecutó los métodos en función de sus nombres de métodos considerando el orden alfabético y lo mismo se reflejó en la salida también.
Cómo establecer la prioridad en TestNG
Como ha visto en el ejemplo anterior, la secuenciación requería para pasar este escenario, por lo que modificaremos el fragmento de código anterior con el parámetro de prioridad para que cada prueba se ejecute en función de la prioridad asignada.
Ahora, como puede ver, hemos asignado la Prioridad a cada caso de prueba, lo que significa que el caso de prueba se ejecutará primero con el valor de prioridad más bajo.
Prioridad en testNG en acción
import org.openqa.selenium.By;importar org.openqa.selenium.WebDriver;importar org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations.Test;public class Priority_In_testNG {Controlador WebDriver;// Método 1: abrir el navegador y decir Firefox@Test (prioridad = 1)public void openBrowser () {controlador = nuevo FirefoxDriver ();}// Método 2: Inicie Google.com@Test (prioridad = 2)public void launchGoogle () {driver.get ("http://www.google.co.in");}// Método 3: realizar una búsqueda usando "Facebook"@Test (prioridad = 3)public void peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Buscar']")). sendKeys ("Facebook");}// Método 4: verificar el título de la página de búsqueda de Google.@Test (prioridad = 4)public void FaceBookPageTitleVerification () lanza Exception {driver.findElement (By.xpath (".//*[@ value = 'Buscar']")). click ();Hilo.sueño (3000);Assert.assertEquals (driver.getTitle (). Contains ("Facebook - Búsqueda de Google"), verdadero);}}
Explicación del código
Después de asignar prioridad a cada caso de prueba, ejecute el código anterior usando testNG como se muestra en el Video-2 mencionado a continuación.
Aquí, puede ver que los casos de prueba tienen prioridad. Los casos de prueba que tienen una prioridad más baja se ejecutan primero, es decir, ahora hay una ejecución secuencial de acuerdo con la prioridad en los casos de prueba. Por lo tanto, todos los casos de prueba están pasando ahora.
Tenga en cuenta la consola de eclipse:
Salida :
PASADO: openBrowserAPROBADO: launchGooglePASADO: peformSearchAndClick1stLinkPASADO: FaceBookPageTitleVerification
El número 0 tiene la prioridad más alta (se ejecutará primero) y la prioridad continúa según el número dado, es decir, 0 tiene la prioridad más alta que 1. 1 tiene la prioridad más alta que 2 y así sucesivamente.
paquete com.guru.testngannotations;import org.testng.annotations.Test;clase pública TestNG_Priority_Annotations {@Test (prioridad = 6)public void c_method () {System.out.println ("Estoy en el método C");}@Test (prioridad = 9)public void b_method () {System.out.println ("Estoy en el método B");}@Test (prioridad = 1)public void a_method () {System.out.println ("Estoy en el método A");}@Test (prioridad = 0)public void e_method () {System.out.println ("Estoy en el método E");}@Test (prioridad = 3)public void d_method () {System.out.println ("Estoy en el método D");}}
Producción
Estoy en el método EEstoy en el método AEstoy en el método DEstoy en el método CEstoy en el método B
Aquí hemos proporcionado las prioridades como 0,1,3,6,9. Entonces, el método que tiene 0 como prioridad se ejecuta primero y luego el método que tiene prioridad-1 y así sucesivamente. Aquí el nombre del método de orden alfabético no se considerará ya que proporcionamos las prioridades
Métodos con la misma prioridad:
Puede existir la posibilidad de que los métodos tengan la misma prioridad. En esos casos, testng considera el orden alfabético de los nombres de métodos cuya prioridad es la misma.
paquete com.guru.testngannotations;import org.testng.annotations.Test;clase pública TestNG_Priority_Annotations {@Test (prioridad = 6)public void c_method () {System.out.println ("Estoy en el método C");}@Test (prioridad = 9)public void b_method () {System.out.println ("Estoy en el método B");}@Test (prioridad = 6)public void a_method () {System.out.println ("Estoy en el método A");}@Test (prioridad = 0)public void e_method () {System.out.println ("Estoy en el método E");}@Test (prioridad = 3)public void d_method () {System.out.println ("Estoy en el método D");}}
Producción
Estoy en el método EEstoy en el método DEstoy en el método AEstoy en el método CEstoy en el método B
Aquí 'e' y 'd' se ejecutan en función de sus valores de prioridad. Pero los métodos 'a' y 'c' contienen el mismo valor de prioridad (6). Entonces, aquí testng considera el orden alfabético de 'a' y 'c' y los ejecuta en consecuencia.
Combinando métodos priorizados (que tienen la misma prioridad) y no priorizados:
En este caso, cubriremos dos casos en una clase de prueba.
- Métodos que tienen el mismo valor de prioridad.
- Más de un método no priorizado.
paquete com.guru.testngannotations;import org.testng.annotations.Test;clase pública TestNG_Priority_Annotations {@Prueba()public void c_method () {System.out.println ("Estoy en el método C");}@Prueba()public void b_method () {System.out.println ("Estoy en el método B");}@Test (prioridad = 6)public void a_method () {System.out.println ("Estoy en el método A");}@Test (prioridad = 0)public void e_method () {System.out.println ("Estoy en el método E");}@Test (prioridad = 6)public void d_method () {System.out.println ("Estoy en el método D");}}
Producción:
Estoy en el método BEstoy en el método CEstoy en el método EEstoy en el método AEstoy en el método D
PASADO: b_methodPASADO: c_methodPASADO: e_methodPASADO: a_methodPASADO: d_method
Explicación:
Primera preferencia: métodos no priorizados: 'c' y 'b': según el orden alfabético, se ejecutó primero 'b' y luego 'c'.
Segunda preferencia: métodos priorizados: 'a', 'e' y 'd': 'e' se ejecutó primero ya que tenía la prioridad más alta (0). Como la prioridad de los métodos 'a' y 'd' era la misma, testng consideró el orden alfabético de los nombres de sus métodos. Entonces, entre ellos, primero se ejecutó 'a' y luego 'd'.
Sensible a mayúsculas y minúsculas en TestNG
Solo para su información, hay una sintaxis estándar para definir la prioridad en testNG, es decir, @Test (prioridad = 4) , suponga que lo está definiendo en alguna otra sintaxis, digamos @Test (PRIORIDAD = 1), entonces su IDE lo mostrará como un error de compilación . Consulte la imagen a continuación:
Conclusión:
Como ha visto, si hay un requisito para ejecutar un conjunto de casos de prueba en una secuencia específica, entonces se puede hacer fácilmente usando Prioridad usando testNG como una herramienta de ejecución.
Este tutorial es posible gracias a las contribuciones de Ramandeep Singh y Rama Krishna Gadde