Locust性能测试教程

locust -f test.py QueryOne QueryTwo

weight

一个Locust实例被挑选执行的权重,数值越大,执行频率越高。在一个 locustfile.py 文件中可以同时定义多个 HttpLocust 子类,然后分配他们的执行权重

Locust性能测试教程

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"

Locust性能测试教程

根据打印的结果就可以看出,data1被设为了全局变量,无论怎么多次执行值都不会变;data2被设为函数变量,因为每次执行该函数(接口进行一次请求),该变量都会重新执行发生变化。

因此,如果接口需要参数不重复,将该参数的生成方法写在执行函数中即可;如果接口需要的参数保持不变,将该参数写为全局变量即可

上一页12下一页


留言