Translate

martes, 13 de octubre de 2026

Locust: generando datos aleatorios para nuestros tests



En el post anterior vimos cómo utilizar Locust para simular usuarios consultando nuestra API.

Pero si queremos probar un POST, aparece un problema: ¿Qué datos enviamos?


Podríamos escribir siempre el mismo producto:


{

  "name": "Notebook",

  "price": 1000,

  "stock": 10

}


Pero en una prueba de carga es mucho más interesante generar datos diferentes.

Python ya nos proporciona herramientas para hacerlo:


import random

import string


Podemos crear una función para generar nombres:


def random_name():

    return ''.join(

        random.choices(string.ascii_letters, k=10)

    )


Y utilizarla en nuestro POST:


@task

def create_product(self):


    product = {

        "name": random_name(),

        "price": random.randint(10, 1000),

        "stock": random.randint(1, 100)

    }


    self.client.post(

        "/products",

        json=product

    )


Cada vez que Locust ejecute la tarea se generará un producto diferente.


Por ejemplo:


{

  "name": "aKxPqLmZtR",

  "price": 742,

  "stock": 34

}


Y en la siguiente ejecución:


{

  "name": "QrTnYwBcLp",

  "price": 156,

  "stock": 82

}


De esta manera podemos evitar que nuestro test dependa siempre de los mismos datos.

Porque una prueba de carga debería intentar parecerse, dentro de lo posible, a lo que ocurre en producción.


En lugar de:

POST → siempre el mismo producto

POST → siempre el mismo producto

POST → siempre el mismo producto


podemos tener:

POST → producto A

POST → producto B

POST → producto C

POST → producto D


Y ya tenemos un escenario de prueba un poco más realista.

No hay comentarios.:

Publicar un comentario