Proveedores de datos de TestNG: descripción general y demostración completas

Última actualización: 06 de septiembre de 2020 Continuous Testing Modo experto

 

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:

  1. Java
  2. Selenio
  3. Eclipse IDE
  4. 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.

proveedores de datos de testng

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.

Proveedores de pruebas de Eclipse

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

Proveedores de datos de Eclipse TestNG

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.

proveedores de datos de testng del espacio de trabajo

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

Proveedores de datos de Eclipse TestNG

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.

Proveedores de datos de TestNG (archivo ZIP)

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.

Proveedores de datos de TestNG disponibles en el software

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.

asistente testng proveedores de datos

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.

nuevo proyecto

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

jarra externa

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.

añadir biblioteca

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.

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.

proveedores de datos de testng

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

variables de prueba

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:

Resultados

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:

informe de prueba

Aquí están los detalles de la prueba:

guía de inicio rápido

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.

Guy ArieliCTO

También puede interesarle