Dependencia de aprendizaje de TestNG

fondo:

A veces es necesario llamar a los métodos de prueba en un orden específico. Por ejemplo:

  • Antes de ejecutar más métodos de prueba, asegúrese de que una cierta cantidad de métodos de prueba se hayan completado y hayan tenido éxito.

  • Inicialice el elemento de prueba mientras desea utilizar el método inicializado también como método de prueba.

TestNG permite especificar dependencias mediante anotaciones o XML.

1. Usa anotaciones para especificar dependencias

    Puede usar el atributodependOnMethods odependOnGroups en la anotación @Test.

    Hay dos dependencias:

    fuerte dependencia . Todos los métodos que dependen de deben ejecutarse y ejecutarse correctamente. Si ocurre al menos una falla en una dependencia, no se llamará y se marcará como SKIP.

    Dependencias débiles. Incluso si algunos de estos métodos fallan, siempre se ejecutarán después de los métodos de los que dependen. Esto es útil cuando desea asegurarse de que los métodos de prueba se ejecuten en un orden determinado, pero su éxito no depende realmente del éxito de otros métodos. Las dependencias débiles se obtienen agregando "alwaysRun=true" a la anotación @Test.

    Ejemplos de fuertes dependencias:

@Testpublic void serverStartedOk() {} @Test(dependsOnMethods = { "serverStartedOk" })public void method1() {}

    En este ejemplo, method1() se declara como dependiente del método serverStartedOk(), lo que garantiza que serverStartedOk() siempre se llamará con preferencia.    

    También puedes depender de todo un grupo:​​​​​​​​

@Test(groups = { "init" })public void serverStartedOk() {} @Test(groups = { "init" })public void initEnvironment() {} @Test(dependsOnGroups = { "init.*" })public void method1() {}

     En este ejemplo, se declara que method1() depende de cualquier grupo que coincida con la expresión regular "init.*", lo que garantiza que los métodos serverStartedOk() e initEnvironment() siempre se llamarán antes que method1().

    Nota : como se mencionó anteriormente, no se garantiza que los métodos que pertenecen al mismo grupo se llamen en el mismo orden dentro de la misma ejecución del proyecto de prueba.

    Si un método dependiente falla y tiene una dependencia estricta (alwaysRun=false, que es el valor predeterminado), el método que depende de él no se marcará como FAIL, sino que se marcará como SKIP. Los métodos omitidos también se mostrarán en el informe final (ni rojo ni verde en HTML), porque los métodos omitidos no fallan necesariamente (los métodos marcados con @Antes/Después no se mostrarán en el informe final).

 

    DependsOnGroups和dependsOnMethods

    Tanto DependsOnGroups como dependOnMethods aceptan expresiones regulares como parámetros. Para dependOnMethods, si depende de un método que tiene más de una versión sobrecargada, se llamarán a todos los métodos sobrecargados. Si solo desea llamar a uno de los métodos sobrecargados, debe usar dependOnGroups.

    De forma predeterminada, los métodos dependientes se agrupan por clase. Por ejemplo, si el método b() depende del método a(), y hay varias instancias de clases que contienen estos métodos (si están involucrados proveedores de datos y fábricas), la secuencia de llamadas es la siguiente:

a(1)a(2)b(2)b(2)

    TestNG no ejecutará b() hasta que todas las instancias hayan terminado de llamar a su método a().

    Pero en algunos casos, como cuando se prueba iniciar y cerrar sesión en un navegador web, es posible que no se desee el comportamiento anterior. En este caso, se debe requerir la siguiente secuencia:​​​​​​​​

signIn("us")signOut("us")signIn("uk")signOut("uk")

    Esto se puede lograr utilizando el atributo XML agrupar por instancias. Este atributo es válido en <suite> o <test>:​​​​​​​​

  <suite name="Factory" group-by-instances="true">or  <test name="Factory" group-by-instances="true">

2. Usa XML para especificar dependencias

    Las dependencias de grupo se pueden especificar en el archivo testng.xml. Use la etiqueta <dependencies> para lograr esto:​​​​​​​​

<test name="My suite">  <groups>    <dependencies>      <group name="c" depends-on="a  b" />      <group name="z" depends-on="c" />    </dependencies>  </groups></test>

El atributo <depends-on> contiene una lista de grupos separados por espacios.

Bienvenido a prestar atención a mi cuenta pública [Test Memo] y comunicarnos juntos ~

Supongo que te gusta

Origin blog.csdn.net/hashsabr/article/details/113837862
Recomendado
Clasificación