我正在尝试使用Locust.io加载测试HTTP URL(动态)。我已经有了python脚本,它将对URL进行GET调用。我面临的挑战是,网址和用户数是动态的,可以从CSV文件中读取。
例如,以下是负载测试的输入结果:
Input.csv:
============
URLs No of users to simulate
=============================================
URL 1 1000
URL 2 5000
URL 3 2000
URL 4 1000
CSV中的每个网址都是唯一的,并且模拟每个网址的更改的用户数量。我想在分布式模式下使用蝗虫负载测试。
例如,Locust master将读取URL 1并将其发送到Slave 1以模拟1000个用户。然后选择URL2并将其发送到Slave 2以模拟5000个用户。
我如何使用蝗虫实现这一目标?有人会抛光吗?
答案 0 :(得分:0)
蝗虫并不像你想象的那样支持这种方式。蝗虫权重任务而不是用户,因此您可以为要执行的任务(上面的网址)提供相对权重。
您可能想要做的是使用TaskSet:
以这种方式自行加权class MyTaskSet(TaskSet):
@task(1)
def one(self):
self.client.get("url 1")
@task(5)
def two(self):
self.client.get("url 2")
@task(2)
def three(self):
self.client.get("url 3")
@task(1)
def three(self):
self.client.get("url 4")
您可以使用代码来解析和读取您的文件(虽然您已将其命名为csv格式,但您已将其命名为?),然后将其传递给{{1}装饰者和网址。
答案 1 :(得分:0)
使用蝗虫LoadTestShape: https://docs.locust.io/en/stable/generating-custom-load-shape.html
MyCustomShape(LoadTestShape)类: time_limit = 600 spawn_rate = 20
def tick(self):
run_time = self.get_run_time()
if run_time < self.time_limit:
# User count rounded to nearest hundred.
user_count = round(run_time, -2)
return (user_count, spawn_rate)
return None