参考下面的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到列表
- 如何与不同用户一起运行蝗虫