在特定数量的请求后停止蝗虫
Posted
技术标签:
【中文标题】在特定数量的请求后停止蝗虫【英文标题】:Stop locust after specific number of requests 【发布时间】:2020-02-11 06:48:39 【问题描述】:我使用的是 locust 0.14.4。我正在测试一个休息 api。我想模拟一个用户登录应用程序然后发出少量 GET 请求的场景。例如假设我希望用户在登录后发出 3 次 GET 请求。我希望用户数为 3。在这种情况下,每个用户都应该登录并发出 3 次 GET 请求,并且 locust 应该停止。所以总共有 12 个请求。
我发现以前有一个选项-n来指定请求的数量,但是在0.14.4版本中没有。
我找到了一个类似的question 但是它对我不起作用。
这是我的代码 sn-p:
class MyTaskSet(TaskSet):
def on_start(self):
""" on_start is called when a Locust start before any task is scheduled """
self.login()
def login(self):
resp = self.client.post("https://" + hostip + "/session", auth=(username, password),verify=False)
data = json.loads(resp.text)
global session_id
session_id = data['value']
@seq_task(1)
def user_workflow(self):
for i in range(0, 1, 1):
self.get_counters()
self.get_providers()
self.get_metrics()
def get_counters(self):
self.client.get("/counters",headers='session-id': session_id, 'Accept': 'application/json',
'Content-Type': 'application/json')
def get_providers(self):
self.client.get("/providers",headers='session-id': session_id, 'Accept': 'application/json',
'Content-Type': 'application/json')
def get_metrics(self):
self.client.get("/metrics",headers='session-id': session_id, 'Accept': 'application/json',
'Content-Type': 'application/json')
@seq_task(2)
def done(self):
raise StopLocust()
当我尝试使用命令运行测试时
$locust -f locustfile.py --no-web -c 3 -r 3
我得到以下输出:
Type Name #reqs 50%
GET /counters 1 840
GET /metrics 1 470
GET /providers 1 480
POST /session 3 1300
None Aggregated 6 1300
我想要实现的是每个用户都应该登录并发出 3 个 GET 请求,当最后一个用户发出第三个 get 调用时,蝗虫应该停止。有没有更清洁的方法来实现这一点?
【问题讨论】:
【参考方案1】:使用 seq_task 时应使用 TaskSquence 代替 TaskSet 作为超类
【讨论】:
以上是关于在特定数量的请求后停止蝗虫的主要内容,如果未能解决你的问题,请参考以下文章