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 parametrizar un archivo .json en Rest Assured?

Soy nuevo en el marco de automatización Rest Assured, así que necesito ayuda. Tengo que automatizar una API simple en la cual envío la solicitud en el cuerpo.

given().log().all().contentType("application/json").body(payload).when().log().all().post("LA URL DE POST").then().log().all().assertThat().statusCode(200);

Tengo que leer la solicitud desde un archivo JSON, y puedo leer la solicitud del archivo .json correctamente. Pero quiero parametrizar los valores y no entiendo cómo parametrizar el archivo. A continuación se muestra un ejemplo de archivo .json:

{
  "id" : 5,
  "name" : "Harry"
}

No quiero escribir los valores de id y name aquí, en su lugar quiero parametrizarlos usando proveedores de datos u otro método. Cualquier sugerencia al respecto sería útil.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para parametrizar los valores en el archivo JSON, puedes utilizar proveedores de datos en Rest-Assured. Esto te permitirá pasar diferentes valores para los campos id y name al ejecutar las pruebas. Aquí tienes un ejemplo de cómo hacerlo:

    1. Define un método proveedor de datos en tu clase de prueba:
    @DataProvider(name = "jsonTestData")
    public Object[][] getJsonTestData() {
        return new Object[][] {
            { 1, "John" },
            { 2, "Jane" },
            { 3, "Bob" }
        };
    }
    
    1. Modifica tu método de prueba para aceptar los parámetros id y name:
    @Test(dataProvider = "jsonTestData")
    public void testApi(int id, String name) {
        JSONObject request = new JSONObject();
        request.put("id", id);
        request.put("name", name);
    
        given().contentType("application/json")
               .body(request.toString())
               .when().post("LA URL DE LA PETICIÓN POST")
               .then().assertThat().statusCode(200);
    }
    
    1. Crea un nuevo archivo JSON con marcadores de posición para los campos id y name:
    {
        "id" : "{{id}}",
        "name" : "{{name}}"
    }
    
    1. Modifica el método proveedor de datos para leer del archivo JSON y reemplazar los marcadores de posición con los valores reales:
    @DataProvider(name = "jsonTestData")
    public Object[][] getJsonTestData() {
        JSONArray jsonArray = JsonReader.readJsonArrayFromFile("data.json");
    
        Object[][] result = new Object[jsonArray.size()][];
        for (int i = 0; i < jsonArray.size(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            int id = jsonObject.getInt("id");
            String name = jsonObject.getString("name");
    
            // Reemplazar los marcadores de posición en el archivo JSON con los valores reales
            String jsonBody = jsonObject.toString().replace("{{id}}", Integer.toString(id))
                                                    .replace("{{name}}", name);
    
            result[i] = new Object[] { id, name, jsonBody };
        }
    
        return result;
    }
    

    Ahora, al ejecutar tus pruebas, el proveedor de datos leerá del archivo JSON y reemplazará los marcadores de posición con los valores reales. Esto te permitirá probar tu API con diferentes valores para id y name sin codificarlos directamente en tu código.

Comments are closed.