Dependencia en TestNG

Dependencia en TestNG
MIN
23 Mar 2024

La regla es que cada método de ensayo debe ser independiente de los demás, es decir j. el resultado o rendimiento de un método de ensayo no debe afectar a los demás métodos de ensayo. Sin embargo, a veces en automatización podemos necesitar que un método de prueba dependa de otros.

Puede que queramos preservar las dependencias entre métodos de prueba para ahorrar tiempo, o para escenarios en los que la llamada a ejecutar una prueba concreta dependa del resultado de alguna otra prueba.

TestNG es un marco de pruebas que nos proporciona dos atributos – dependsOnMethod y dependsOnGroup dentro de la anotación @Test para conseguir dependencias entre pruebas. Examinemos ahora estos atributos.

Índice

DependeDeMétodo

Utilizando el atributo «dependsOnMethod» dentro de la anotación @Test, podemos especificar el nombre del método de prueba padre del que debe depender la prueba.

Algunos puntos que debes recordar sobre dependsOnMethod:

  • Al ejecutar una clase de prueba completa o un conjunto de pruebas, el método parentTest se ejecuta antes que el método dependentTest.
  • Si ejecutamos dependienteTest por sí mismo, el método padreTest también se ejecuta antes que dependienteTest.
  • Si el método PruebaPadre falla, el método PruebaDependiente no se ejecutará y se marcará como omitido.

@Prueba(dependeDeMétodos={«pruebaPadre»})

Fragmento de código

En el siguiente fragmento de código, tenemos dos métodos de prueba: parentTest() y dependentTest(). El método dependentTest depende del método parentTest mediante el atributo dependsOnMethods.

public class TutorialExample {

    @Test

    public void parentTest() { 

      System.out.println("Running parent test.");

    }

    @Test(dependsOnMethods={"parentTest"}) 

    public void dependentTest() { 

      System.out.println("Running dependent test.");

    } 

}

Obtenido de

Cuando se ejecuta el propio método dependentTest(), el método parentTest() también se ejecuta antes que el método dependentTest(). Esto se hace para mantener la dependencia.

Running parent test.

Running dependent test.

PASSED: parentTest

PASSED: dependentTest

===============================================

    Default test

    Tests run: 2, Failures: 0, Skips: 0

===============================================

DependeDelGrupo

El atributo dependsOnGroup se utiliza para hacer que un método de prueba dependa de un conjunto de pruebas pertenecientes a un grupo concreto. Esto garantiza que la prueba dependiente se ejecute después de que se hayan ejecutado todas las pruebas del grupo padre.

Algunos puntos que debes recordar sobre DependsOnMethod:

  • Cuando se ejecuta una clase de prueba o un conjunto de pruebas completo, las pruebas pertenecientes al grupo padre se ejecutan antes que las pruebas dependientes.
  • Si ejecutamos la propia prueba dependiente, todas las pruebas pertenecientes al grupo padre se ejecutarán antes que la prueba dependiente.
  • Si alguna o todas las pruebas del método del grupo padre fallan, el método de la prueba dependiente no se ejecutará y se marcará como omitido.

@Prueba(dependeDeGrupos = «grupoA»)

Fragmento de código

En el siguiente fragmento de código, tenemos dos métodos de prueba – testMethod1ForGroupA() y testMethod2ForGroupA(), que pertenecen al grupo groupA. Entonces tenemos un método dependentTest – dependentTestOnGroupA, que depende de los métodos del grupoA mediante el atributo dependsOnGroups. En aras de la demostración, fallamos deliberadamente el método testMethod2ParaGrupoA.

public class TutorialExample {

    @Test(groups = "groupA")

    public void testMethod1ForGroupA() {

     System.out.println("Running test method1 of groupA");

    }

    @Test(groups = "groupA")

    public void testMethod2ForGroupA() {

     System.out.println("Running test method2 of groupA");

     Assert.fail();

    }

    @Test(dependsOnGroups = "groupA")

    public void dependentTestOnGroupA() {

     System.out.println("Running the dependent test");

    }

}

Resultado de TestNG

Cuando se ejecuta la propia función dependentTestOnGroupA() o se ejecuta toda la clase de prueba, podemos observar la siguiente salida.

Aquí podemos observar que TestNG intenta ejecutar las 3 pruebas y, debido a la dependencia, ejecuta primero testMethod1FParaGrupoA y testMethod2ParaGrupoA. Como ha fallado la pruebaMétodo2ParaGrupoA, prueba dependiente, t. j. dependentTestOnGroupA, no se ejecuta y se marca como omitida.