Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
|
fw:locust [2014/08/08 09:02] alfred [The TaskSet class] |
fw:locust [2020/05/09 09:25] (actual) |
||
|---|---|---|---|
| Línea 2: | Línea 2: | ||
| Is a load testing tool in which you define user behaviour and the system launches a lot of non-real users accessing your web page. | Is a load testing tool in which you define user behaviour and the system launches a lot of non-real users accessing your web page. | ||
| + | * Docs: [[http://docs.locust.io/en/latest/]] | ||
| ===== Basic things ===== | ===== Basic things ===== | ||
| ==== Install ==== | ==== Install ==== | ||
| Línea 18: | Línea 19: | ||
| * ''host'', you can specify it on the command line using the –host option. It tells the host to be loaded. | * ''host'', you can specify it on the command line using the –host option. It tells the host to be loaded. | ||
| * ''weight'' tells the frequency of use, for example, ''WebUserLocust'' will be executed three times ''MobileUserLocust''. | * ''weight'' tells the frequency of use, for example, ''WebUserLocust'' will be executed three times ''MobileUserLocust''. | ||
| - | <code> | + | <code python> |
| class WebUserLocust(Locust): | class WebUserLocust(Locust): | ||
| weight = 3 | weight = 3 | ||
| Línea 57: | Línea 58: | ||
| </code> | </code> | ||
| Is the same than... | Is the same than... | ||
| - | <code> | + | <code python> |
| from locust import HttpLocust, TaskSet, task | from locust import HttpLocust, TaskSet, task | ||
| Línea 118: | Línea 119: | ||
| ==== The TaskSet class ==== | ==== The TaskSet class ==== | ||
| === Declaring tasks with the task decorator === | === Declaring tasks with the task decorator === | ||
| - | <code> | + | <code python> |
| from locust import Locust, TaskSet, task | from locust import Locust, TaskSet, task | ||
| Línea 130: | Línea 131: | ||
| </code> | </code> | ||
| Or defining weight (task2 will be executed twice than task): | Or defining weight (task2 will be executed twice than task): | ||
| - | <code> | + | <code python> |
| from locust import Locust, TaskSet, task | from locust import Locust, TaskSet, task | ||
| Línea 147: | Línea 148: | ||
| class MyLocust(Locust): | class MyLocust(Locust): | ||
| task_set = MyTaskSet | task_set = MyTaskSet | ||
| + | </code> | ||
| + | |||
| + | === Set an dictionary to tasks attribute === | ||
| + | The next dictionary will assign two tasks, each one with their weight. | ||
| + | <code python> | ||
| + | class MyTaskSet(TaskSet): | ||
| + | tasks = {my_task: 3, another_task:1} | ||
| + | </code> | ||
| + | |||
| + | === The on_start function === | ||
| + | A TaskSet class can declare an on_start function. That function is called when a simulated user starts executing tasks in that TaskSet. | ||
| + | |||
| + | === Nesting TaskSets === | ||
| + | We can define a ''TaskSet'' as a task. Then it will represent a group of sub-task which are executed in that way. | ||
| + | |||
| + | It could be useful to represent a user that makes actions over the web (like enter in a web, then browse films and watch one, then navigate in the blog and comment and comment again, then navigate again, then browse films...). | ||
| + | |||
| + | A nested class set could call the ''self.interrupt()'' function. It interrupts the action in that class set. | ||
| + | |||
| + | === Nested sub-tasks examples === | ||
| + | |||
| + | <code python> | ||
| + | class ForumPage(TaskSet): | ||
| + | @task(20) | ||
| + | def read_thread(self): | ||
| + | pass | ||
| + | |||
| + | @task(1) | ||
| + | def new_thread(self): | ||
| + | pass | ||
| + | |||
| + | @task(5) | ||
| + | def stop(self): | ||
| + | self.interrupt() | ||
| + | |||
| + | class UserBehaviour(TaskSet): | ||
| + | tasks = {ForumPage:10} | ||
| + | |||
| + | @task | ||
| + | def index(self): | ||
| + | pass | ||
| + | </code> | ||
| + | <code python> | ||
| + | class MyTaskSet(TaskSet): | ||
| + | @task | ||
| + | class SubTaskSet(TaskSet): | ||
| + | @task | ||
| + | def my_task(self): | ||
| + | pass | ||
| </code> | </code> | ||
| ==== Hacer nuestro propio cliente ==== | ==== Hacer nuestro propio cliente ==== | ||