Publicado: septiembre 6, 2020
Proveedores de datos de TestNG: descripción general y demostración completas
Cedric Beust creó el popular framework de automatización de pruebas TestNG en 2003 utilizando el lenguaje de programación Java. Es similar a JUnit y NUnit, pero resuelve algunas de sus deficiencias, como el control de configuración deficiente, los modelos de programación estáticos y la falta de pruebas de dependencias. Está diseñado para cubrir una amplia gama de proyectos de pruebas, incluyendo pruebas funcionales, unitarias y de sistemas integrados. TestNG ofrece potentes características que no solo permiten a los testers realizar tareas de prueba complejas, sino que también facilitan el uso de sus funcionalidades. Si bien TestNG es conocido principalmente por sus anotaciones, TestNG DataProviders es otra característica útil que simplifica y agiliza las pruebas basadas en datos. Con la parametrización de datos, los Data Listeners, los DataProviders, los informes HTML, los registros, la agrupación de casos de prueba, la priorización y las capacidades de prueba en paralelo, TestNG se ha convertido rápidamente en uno de los favoritos de la mayoría de los testers.
¿Qué son los DataProviders de TestNG?
Uno de los aspectos importantes de TestNG es el testing basado en datos. La función DataProviders forma parte de este testing, ya que proporciona diferentes valores a un caso de prueba en una sola ejecución. Esto significa que se puede ejecutar un único caso de prueba una sola vez, pero ejecutar un método con diferentes valores de datos. Por ejemplo, se puede probar una página de registro con diferentes entradas, pero la prueba se ejecutará solo una vez. La función DataProviders de TestNG pasa todos estos valores al caso de prueba uno a la vez, de modo que se prueban diferentes conjuntos de datos en una sola ejecución.
La necesidad de proveedores de datos de TestNG
Los parámetros de TestNG ofrecen una funcionalidad similar que proporciona valores a las funciones mediante un archivo XML. Con los parámetros, se pueden ejecutar varias funciones con un único conjunto de datos o una única función con varios conjuntos de datos. Sin embargo, la desventaja de los parámetros es que solo se puede ejecutar el caso de prueba una vez con ese valor. En un proyecto de pruebas estándar, es necesario ejecutar casos de prueba con múltiples valores. En tal caso, sería necesario ejecutar el caso de prueba varias veces con diferentes conjuntos de datos. Los proveedores de datos de TestNG solucionan este problema, permitiendo ejecutar el caso de prueba una sola vez, pero utilizando diferentes conjuntos de datos. Proporcionan valores de datos en forma de array a los métodos de prueba mediante anotaciones.
¿Cómo funciona?
La función DataProviders de TestNG utiliza la siguiente sintaxis. Por ejemplo:
[java] @DataProvider (name = “ExperitestDataProvider”) public Object[][] ExperitestDPMethod() { return new Object [][] { values} } [/java]
Si revisas la sintaxis, verás que utiliza anotaciones de TestNG. Solo se usa un parámetro: el nombre. Este parámetro acepta únicamente un valor de cadena como nombre del proveedor de datos. Estos proveedores tienen su propio método; por ejemplo, `ExperitestDPMethod()`. Por defecto, TestNG toma el nombre del método como nombre del proveedor de datos si no se especifica.
Al ejecutar el caso de prueba, el proveedor de datos llama al método del proveedor de datos, que devuelve una lista de objetos 2D para realizar pruebas basadas en datos para cada conjunto de datos.
Instalación
Aquí están los siguienteswing toRequisitos para usar la función DataProviders de TestNG:
- Java
- Selenio
- Eclipse IDE
- PruebaNG
Paso 1: Instalar Java
Para ejecutar TestNG, necesita el Kit de Desarrollo de Java (JDK) 8.0 o superior. Visite este enlace para descargar e instalar Java en su equipo.
https://www.oracle.com/in/java/technologies/javase-downloads.html
Java SE 14.0.2 es la versión más reciente. Descarga el archivo ejecutable y haz doble clic para instalar el software.
Paso 2: Configurar la variable de entorno
Después de instalar Java, debe especificar la ruta de Java en el sistema. Para ello: Abra Sistema -> Propiedades avanzadas del sistema -> Avanzado -> Variables de entorno.

Para 'variables de usuario para Usuario', introduzca:
- C:\Archivos de programa\Java\jdk-14.0.2
Para la ruta de las variables del sistema, introduzca la ruta de la carpeta bin:
- C:\Archivos de programa\Java\jdk-14.0.2\bin
Ahora, Java está listo para su uso.
Paso 3: Instalar Eclipse
Para crear y editar scripts de Java, necesitas un IDE de Java. Eclipse e IntelliJ son dos IDE populares para Java. Para instalar Eclipse, visita el siguiente enlace:
https://www.eclipse.org/downloads/
La última versión es Eclipse IDE 2020-06. Una vez descargado el software, haga doble clic en él e instálelo.

Existen varias versiones de Eclipse. Por lo tanto, elige 'Eclipse para desarrolladores de Java' y procede con la instalación.

Una vez finalizada la instalación, abre el IDE. Cada vez que lo abras, te pedirá que elijas una carpeta para el espacio de trabajo. Puedes usar la ubicación predeterminada o elegir una nueva.

Al abrir Eclipse por primera vez, aparecerá una pantalla de bienvenida. El IDE ya está listo para usar.

Paso 4: Instalar Selenium
Selenium es un popular framework de automatización de pruebas de código abierto que ha ganado mucha popularidad últimamente. Visita este enlace para descargar el software Selenium:
https://www.selenium.dev/downloads/
Descarga el servidor independiente de Selenium, que se distribuye como un archivo JAR. La última versión estable es la 3.141.59. No es necesario instalarlo; simplemente guárdalo en tu ordenador.
Paso 5: Instalar TestNG
En versiones anteriores de Eclipse, TestNG estaba disponible en el Eclipse Marketplace, donde bastaba con hacer clic en "Instalar" para añadirlo a Eclipse. Con la última versión, es necesario descargar TestNG manualmente y añadirlo como archivo de biblioteca. Visita este enlace para descargar TestNG:
https://dl.bintray.com/testng-team/testng-eclipse-release/
Haz clic en el enlace comprimido, elige la última versión y guarda los archivos en tu dispositivo.

Para añadir TestNG a Eclipse, abre el IDE y haz clic en «Instalar nuevo software». En la siguiente pantalla, haz clic en «Añadir» y agrega manualmente los archivos.
Alternativamente, puedes proporcionar directamente el enlace de TestNG para que la herramienta descargue automáticamente los archivos.

Seleccione TestNG, haga clic en Siguiente, acepte el acuerdo de licencia y haga clic en Finalizar. Reinicie Eclipse para completar la configuración de TestNG.
Para comprobar si TestNG está instalado correctamente, pulse Ctrl+N y vea si TestNG aparece en la lista.

Ahora, TestNG está listo para su uso.
Primera prueba con proveedores de datos de TestNG
Ahora que todas las herramientas están instaladas, ejecutemos la primera prueba para ver cómo funcionan los DataProviders de TestNG.
Abre el IDE de Eclipse y haz clic en Nuevo -> Proyecto Java. Asigna un nombre al proyecto y haz clic en Siguiente.

En la siguiente pantalla, haga clic en Biblioteca y luego en 'Agregar jar externo'.

Seleccione el archivo jar del servidor independiente de Selenium y haga clic en Aceptar. Selenium se agregará a su proyecto.
Ahora, haz clic en 'Agregar biblioteca' y selecciona TestNG en la siguiente pantalla para agregar TestNG a tu proyecto.

Selenium y TestNG se añaden a tu proyecto junto con el entorno de ejecución de Java.
Haz clic en Nuevo -> Paquete para crear un nuevo paquete.

Crea una nueva clase en ese paquete. Por ejemplo: ExperitestDataProviders.java
Ahora, agregue este código a la clase. Tenga en cuenta que contiene DataProviders de TestNG.
[java] package ExperitestDataProviders; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; public class ExperitestTestNGDP { @DataProvider (name = “Experitest-DataProvider”) public Object[][] ExperitestDPMethod(){ return new Object[][] {{“Experitest1”}, {“Experitest2”}, {“Experitest3”}, {“Experitest4”}, {“Experitest5”}}; } @Test (dataProvider = “Experitest-DataProvider”) public void ExperiTest (String val) { System.out.println(“Passed Parameter Is : ” + val); } } [/java]
- Aquí hemos definido un proveedor de datos con el nombre 'Experitest-DataProvider' y le hemos proporcionado 5 valores (Experitest1, Experitest2, etc.).
- Durante la prueba (@Test), hemos llamado al proveedor de datos.
- Escribimos un método con un parámetro de cadena y almacenamos el valor en 'val'.
- La prueba tomará el valor de cadena y lo imprimirá.
Al ejecutar este caso de prueba una vez, se ejecutará 5 veces y en cada ocasión se imprimirá un valor de cadena. Por lo tanto, utilizando la función DataProviders, hemos ejecutado un único caso de prueba varias veces.

Este es el resultado que muestra que se ejecutaron 5 pruebas y 5 de ellas se superaron.

Demostración de SeeTest Cloud
Aquí tenemos otra demostración de prueba que se ejecuta en SeeTest Cloud. Esta prueba abre un navegador web en la nube y luego el sitio web de Google. A continuación, escribe «Experitest» en el cuadro de búsqueda y busca esa palabra clave en la web. Después, vuelve a abrir el sitio de Google y busca la palabra clave «SeeTest». En este caso, solo hemos escrito una prueba, pero hemos definido un proveedor de datos de TestNG llamado «Experitest-DataProvider», que proporciona dos valores a la prueba.
[java] @DataProvider (name = “Experitest-DataProvider”) public Object[][] ExperitestDPMethod(){ return new Object[][] {{“Experitest”}, {“SeeTest”}}; } [/java]
Así pues, con la función de proveedor de datos, aquí estás ejecutando un único caso de prueba dos veces.
Aquí está el código:
[java] package ExperitestDataProviders; import org.openqa.selenium.*; import org.openqa.selenium.remote.BrowserType; import org.openqa.selenium.remote.CapabilityType; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import java.net.URL; public class DPexample { private String host = “https://cloud.seetest.io”; private static final String ACCESS_KEY = “Ingrese su clave de acceso aquí”; private RemoteWebDriver driver; private URL url; private DesiredCapabilities dc = new DesiredCapabilities(); @DataProvider (name = “Experitest-DataProvider”) public Object[][] ExperitestDPMethod(){ return new Object[][] {{“Experitest”}, {“SeeTest”}}; } @BeforeMethod public void setUp() throws Exception { url = new URL(“https://cloud.seetest.io/wd/hub”); dc.setCapability(CapabilityType.BROWSER_NAME, BrowserType.CHROME); dc.setCapability(CapabilityType.PLATFORM, Platform.ANY); dc.setCapability(“accessKey”, ACCESS_KEY); dc.setCapability("testName", "Demostración rápida del navegador Chrome"); driver = new RemoteWebDriver(url, dc); } @Test (dataProvider = "Experitest-DataProvider") public void ExperiTest (String val) { driver.get("https://www.google.com"); new WebDriverWait(driver, 10).until(ExpectedConditions.presenceOfElementLocated(By.name("q"))); WebElement searchBar = driver.findElement(By.name("q")); searchBar.click(); searchBar.sendKeys(val); searchBar.sendKeys(Keys.ENTER); } @AfterMethod public void tearDown() { System.out.println("URL del informe: " + driver.getCapabilities().getCapability("reportUrl")); driver.quit(); } } [/java]
Aquí está el resultado:

SeeTest es una herramienta integral de automatización de pruebas web y móviles que te permite ejecutar y gestionar fácilmente tus pruebas desde un panel de control intuitivo. También ofrece una potente herramienta de informes que facilita el análisis de tus pruebas.
Aquí está el informe de la prueba de demostración:

Aquí están los detalles de la prueba:

Resumen
DataProviders es una práctica función que permite a los testers escribir un único caso de prueba y ejecutarlo varias veces con conjuntos de datos predefinidos. También permite ejecutar varios métodos utilizando un único conjunto de datos. TestNG DataProviders simplifica las pruebas basadas en datos. La plataforma SeeTest permite aprovechar al máximo esta función para ejecutar fácilmente casos de prueba con diferentes conjuntos de datos y generar informes personalizados.
También puede interesarle
Appium y los marcos de trabajo móviles modernos: Entendiendo los desafíos de la automatización
La automatización móvil ha madurado significativamente durante la última década, en gran medida…
El mito del bloqueo de la automatización: Migración cuántica sin reescrituras
Mientras hablaba con tantos equipos de control de calidad empresariales como...
Marco de diseño de aplicaciones y mejores prácticas basadas en la automatización
Un concepto que promueve cómo los desarrolladores pueden diseñar sus aplicaciones para…