使用Locust对从CSV同时加载的多个URL运行负载测试



参考下面的locusfile.py

from locust import HttpLocust, TaskSet, between, task
import csv
class UserBehavior(TaskSet):
@task(1)
def index(l):
with open ('topURL.csv') as csvfile:
readCSV = csv.reader(csvfile, delimiter=',')
for row in readCSV:
l.client.get("%s" % (row[0]))
class WebsiteUser(HttpLocust):
task_set = UserBehavior
wait_time = between(5.0, 9.0)

当我执行这个脚本时,Locust能够在没有任何错误的情况下运行。但是,它将遍历每一行,并只加载测试最新的URL。当它读取下一个URL时,不再对上一个URL进行负载测试。相反,我希望Locust在从CSV逐行读取的同时加载测试越来越多的URL。

编辑
我通过设置wait_time = between(0.0, 0.0)实现了部分并发

尝试在设置时用csv数据填充数组,并从中随机选择。像

def fill_array():
with open('topURL.csv') as csvfile:
readCSV = csv.reader(csvfile, delimiter=',')
for row in readCSV:
urls.append(row[0])

然后

@task(1)
def index(l):
l.client.get("%s" % (random.choice(urls)))

安装时的更多信息:https://docs.locust.io/en/stable/writing-a-locustfile.html#setups-启动和停止时的拆卸

您可以尝试以下操作:

global USER_CREDENTIALS
USER_CREDENTIALS = list(readCSV)

一旦完成,您将能够为每个虚拟用户/迭代引用每一行

参考文献:

  • Python导入csv到列表
  • 如何与不同用户一起运行蝗虫

最新更新