Locust es una herramienta de prueba de carga/rendimiento de código abierto para HTTP y otros protocolos. Su enfoque amigable para los desarrolladores le permite definir sus pruebas en código Python normal.
Las pruebas de Locust se pueden ejecutar desde la línea de comandos o mediante su interfaz de usuario basada en web. El rendimiento, los tiempos de respuesta y los errores se pueden ver en tiempo real y/o exportar para su posterior análisis.
Puede importar bibliotecas Python normales a sus pruebas y, con la arquitectura conectable de Locust, es infinitamente ampliable. A diferencia de cuando se utiliza la mayoría de las otras herramientas, el diseño de su prueba nunca estará limitado por una GUI o un lenguaje específico de dominio.
Para comenzar de inmediato, dirígete a la documentación.
Si desea que sus usuarios realicen un bucle, realicen algún comportamiento condicional o realicen algunos cálculos, simplemente use las construcciones de programación regulares proporcionadas por Python. Locust ejecuta a cada usuario dentro de su propio greenlet (un proceso/corrutina ligero). Esto le permite escribir sus pruebas como código Python normal (de bloqueo) en lugar de tener que usar devoluciones de llamada o algún otro mecanismo. Debido a que sus escenarios son "solo Python", puede usar su IDE habitual y controlar la versión de sus pruebas como código normal (a diferencia de otras herramientas que utilizan formatos XML o binarios).
de langosta importar HttpUser, tarea, entre clases QuickstartUser(HttpUser):wait_time = entre(1, 2)def on_start(self):self.client.post("/login", json={"username":"foo", " contraseña":"barra"})@taskdef hola_mundo(self):self.client.get("/hello")self.client.get("/world")@task(3)def view_item(self):para item_id en el rango(10):self.client. get(f"/item?id={item_id}", nombre="/item")
Locust facilita la ejecución de pruebas de carga distribuidas en varias máquinas. Está basado en eventos (usando gevent), lo que hace posible que un solo proceso maneje muchos miles de usuarios simultáneos. Si bien puede haber otras herramientas que sean capaces de realizar más solicitudes por segundo en un hardware determinado, la baja sobrecarga de cada usuario de Locust lo hace muy adecuado para probar cargas de trabajo altamente concurrentes.
Locust tiene una interfaz web fácil de usar que muestra el progreso de su prueba en tiempo real. Incluso puedes cambiar la carga mientras se ejecuta la prueba. También se puede ejecutar sin la interfaz de usuario, lo que facilita su uso para pruebas de CI/CD.
Aunque Locust funciona principalmente con sitios/servicios web, se puede utilizar para probar casi cualquier sistema o protocolo. Simplemente escriba un cliente para lo que desea probar o explore algunos creados por la comunidad.
La base de código de Locust se mantiene intencionalmente pequeña y no resuelve todo de inmediato. En su lugar, intentamos facilitar la adaptación a cualquier situación con la que se pueda encontrar, utilizando código Python normal. No hay nada que te impida:
Envíe datos de informes en tiempo real a TimescaleDB y visualícelos en Grafana
Envuelva llamadas para manejar las peculiaridades de su API REST
Utilice una forma/perfil de carga totalmente personalizado
...
Documentación: docs.locust.io
Soporte/Preguntas: StackOverflow
Discusiones de Github: Discusiones de Github
Chat/discusión: Slack (registro)
Mantenedor: Lars Holmberg
Interfaz de usuario: Andrew Baldwin
Creador original: Jonatan Heyman
Muchas gracias a todos nuestros colaboradores.
Código abierto con licencia MIT (consulte el archivo LICENCIA para obtener más detalles).