Pruebas basadas en datos con TestNG y Selenium

En este texto hablaremos de las pruebas basadas en datos. Nos referiremos a la anotación @DataProvider en TestNG, que podemos utilizar para pasar datos a los métodos de prueba y crear un marco de pruebas basado en datos.
Índice
¿Qué es la prueba basada en datos?
La prueba basada en datos es una técnica de automatización de pruebas en la que los datos de prueba y la lógica de prueba están desacoplados. Los datos de prueba impulsan las pruebas al cargarse iterativamente en el script de prueba. Por lo tanto, en lugar de datos de entrada codificados, tenemos datos nuevos cada vez que el script recupera datos de la fuente de datos de prueba.
Pruebas basadas en datos con @DataProvider
TestNG puede realizar pruebas basadas en datos utilizando su anotación @DataProvider. El método con la anotación @DataProvider anterior devuelve una matriz 2D del objeto, donde las filas especifican el número de iteraciones y las columnas el número de parámetros de entrada pasados al método Prueba con cada iteración.
Esta anotación sólo toma como parámetro el nombre del proveedor de datos, que se utiliza para vincular el proveedor de datos al método Prueba. Si no se indica ningún nombre, se tomará el nombre del método del proveedor de datos como nombre del proveedor de datos.
@ProveedorDeDatos(nombre = «nombreDelProveedorDeDatos»)
public Object[][] dataProviderMethodName() {
//Lógica de generación o obtención de datos de cualquier fuente externa
//devuelve 2d array de objeto
devolver nuevo Objeto[][] {{«k1», «r1»,1},{«k2», «r2»,2}};
}
Una vez creado el método del proveedor de datos, podemos asociar el método Test al proveedor de datos utilizando el atributo ‘dataProvider’ de la anotación @Test. Para vincular correctamente el Proveedor de datos al método Prueba, el número y el tipo de datos de los parámetros del método Prueba deben coincidir con los parámetros devueltos por el método Proveedor de datos.
@Prueba(dataProvider = «nombreDataProvider»)
public void sampleTest(cadena testData1, cadena testData2, int testData3) {
System.out.println(testData1 + » » + testData2 + » » + testData3);
}
Fragmento de código para pruebas basadas en datos en TestNG
@DataProvider(nombre = «dataProvider1»)
public Object[][] dataProviderMethod1() {
devolver nuevo Objeto[][] {{«k1», «r1»},{«k2», «r2»},{«k3», «r3»}};
}
//El caso de prueba se ejecutará 3 veces con diferentes conjuntos de valores
@Prueba(dataProvider = «dataProvider1»)
public void muestraPrueba(Cadena cadena1, Cadena cadena2) {
System.out.println(cadena1 + » » + cadena2);
}
La prueba «sampleTest» anterior se ejecuta 3 veces con diferentes conjuntos de datos de prueba – {«k1», «r1»},{«k2», «r2»},{«k3», «r3»} recibidos del método dataProvider1′ dataProvider.