locust -f test.py QueryOne QueryTwo
weight
一个Locust实例被挑选执行的权重,数值越大,执行频率越高。在一个 locustfile.py 文件中可以同时定义多个 HttpLocust 子类,然后分配他们的执行权重
5)参数化
参数化首先需要清楚locust的执行逻辑,定义的用户行为下带有task装饰器的函数才会被协程不断的执行
from locust import HttpLocust, TaskSet, task from random import randint data1 = randint(1, 3) # 定义用户行为 class UserBehavior(TaskSet): def on_start(self): print('开始性能测试') @task(1) def index(self): print(data1) self.client.get("/") @task(2) def index2(self): data2 = randint(1, 3) print(data2) self.client.get( "/s?wd=locust&rsv_spt=1&rsv_iqid=0xbb8514200006b7d0&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_dl=tb&rsv_sug3=8&rsv_sug1=9&rsv_sug7=101&rsv_sug2=0&inputT=1458&rsv_sug4=1911&rsv_sug=2") class WebsiteUser(HttpLocust): task_set = UserBehavior min_wait = 3000 max_wait = 6000 stop_timeout = 5 weight = 3 host = "https://www.baidu.com"
根据打印的结果就可以看出,data1被设为了全局变量,无论怎么多次执行值都不会变;data2被设为函数变量,因为每次执行该函数(接口进行一次请求),该变量都会重新执行发生变化。
因此,如果接口需要参数不重复,将该参数的生成方法写在执行函数中即可;如果接口需要的参数保持不变,将该参数写为全局变量即可