es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Jmeter JSR223 Declaración – Cómo comparar los nombres y valores de los campos de un archivo CSV con los datos de respuesta de la API.

Soy nuevo en Jmeter y esperaba recibir alguna dirección sobre cómo lograr esta tarea.

Se supone que debo escribir un Jmeter que haga lo siguiente:
1. Leer datos de prueba de un archivo CSV y llamar a una API de GraphQL utilizando los datos de prueba.
2. Comparar la respuesta de la API con los valores del archivo CSV.

He logrado el punto 1 utilizando la configuración del Conjunto de Datos CSV. Pero realmente necesito ayuda con el punto 2.

Mi archivo CSV tiene el siguiente formato:
nombrecampo1, nombrecampo2, nombrecampo3
valor1, valor2, valor3

Puedo tener varios archivos CSV para comparar los resultados. Quiero utilizar la aserción JSR223 para verificar dinámicamente los nombres de campo del CSV y comparar el valor de ese nombre de campo con el valor devuelto en la respuesta de la API. El nombre del campo en la respuesta de la API será igual al nombre del campo en el archivo CSV.
Por lo tanto, si puedo escribir un código genérico que seleccione el nombre del campo del CSV y luego compare su valor con el nombre del campo de la respuesta de la API, funcionará siempre y cuando los nombres de campo estén configurados correctamente en el archivo CSV.

¿Alguien podría mostrarme un código de ejemplo que haga esto o orientarme sobre cómo abordarlo?

Cualquier ayuda será muy apreciada.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Hola,

    Para lograr la segunda tarea de comparar la respuesta de la API con los valores del archivo CSV, puedes usar la afirmación JSR223 en JMeter para escribir un script que realice la comparación.

    Aquí tienes un ejemplo de script que debería ayudarte a comenzar:

    def csv = new File('ruta/al/archivo/csv.csv') // Reemplaza con la ruta de tu archivo CSV
    def lines = csv.readLines()
    def header = lines[0].split(',')
    
    for (int i = 1; i < lines.size(); i++) {
        def values = lines[i].split(',')
        for (int j = 0; j < header.length; j++) {
            def fieldName = header[j].trim()
            def expectedValue = values[j].trim()
            def actualValue = vars.get(fieldName) // suponiendo que los campos de respuesta de la API se almacenan en variables de JMeter con el mismo nombre que los campos del CSV
            assert expectedValue == actualValue, "El campo ${fieldName} no coincide. Se esperaba ${expectedValue}, pero se obtuvo ${actualValue}"
        }
    }
    

    Explicación:

    Primero, leemos el archivo CSV y analizamos la línea de encabezado para obtener los nombres de los campos. Luego, recorremos cada fila en el archivo CSV y, para cada nombre de campo, obtenemos el valor esperado de la fila del CSV y el valor actual de la variable de JMeter (suponiendo que los campos de respuesta de la API se almacenan en variables de JMeter con el mismo nombre que los campos del CSV). Luego, comparamos los valores esperados y actuales, y si no coinciden, lanzamos un error de afirmación.

    Es posible que necesites modificar el script ligeramente para adaptarlo a tu caso de uso específico, pero esto debería darte una idea general de cómo abordarlo. ¡Buena suerte!

Comments are closed.