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.

¿Cómo alimentar un valor en un campo de un arreglo json en Gatling?

Estoy usando Gatling para probar una API que acepta un cuerpo JSON como se muestra a continuación:


{
"data": {
"fields": [
{
"rank": 1
},
{
"name": "Jack"
}
]
}
}

He creado un archivo feeder.json que contiene una serie de objetos JSON como los anteriores.
A continuación se muestra el feeder.json


[
{
"data": {
"fields": [
{
"rank": 1
},
{
"name": "Jack"
}
]
}
}
]

He creado otro archivo template.txt que contiene la plantilla del JSON anterior.
A continuación se muestra el template.txt


{
"data": {
"fields": [
{
"rank": ${data.fields[0].rank} //esto no está funcionando
},
{
"name": "Jack"
}
]
}
}

“`
val jsonFeeder = jsonFile("feeder.json").circular
scenario("Escenario de prueba")
.feed(jsonFeeder)
.exec(http("Prueba de llamada a la API")
.post("/data")
.body(ElFileBody("template.txt"))
.asJson
.check(status is 200))

“`
Estoy alimentando el feeder.json y también enviando el cuerpo JSON desde template.json. Los valores de la propiedad ‘rank’ deberían establecerse desde el feeder en el cuerpo JSON. Pero obtengo un error ‘El mapa llamado ‘data’ no contiene la clave ‘fields[0]’. Atascado con esto.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en la sintaxis utilizada en el archivo template.txt. En lugar de usar ${data.fields[0].rank}, intenta usar ${data.fields(0).rank}. Los corchetes cuadrados se utilizan para acceder a valores en un objeto JSON, mientras que los corchetes redondos se utilizan para acceder a valores en un arreglo JSON.

    Entonces, el template corregido debería lucir algo como esto:

    {
     "data": {
          "fields": [
             {
              "rank": ${data.fields(0).rank}     
            },
            {
              "name": "Jack"
            }
           ]
        }
     }
    

    Después de realizar este cambio, tu script de Gatling debería poder alimentar los valores del archivo feeder.json y realizar las llamadas a la API sin errores.

Comments are closed.