在特定数量的请求后停止蝗虫
Stop locust after specific number of requests
我正在使用蝗虫 0.14.4。我正在测试休息api。我想模拟一个用户登录应用程序然后发出少量 GET 请求的场景。例如假设我希望用户在登录后发出 3 个 GET 请求。我希望用户计数为 3。在这种情况下,每个用户都应该登录并发出 3 个 GET 请求,并且蝗虫应该停止。所以一共12个请求。
我发现之前有一个选项-n可以指定请求的数量,但是0.14.4版本没有了。
我找到了一个类似的 但是它对我不起作用。
这是我的代码片段:
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 调用时,locust 应该停止。有没有更简洁的方法来实现这一点?
使用 seq_task
时,应使用 TaskSquence 而不是 TaskSet 作为超级 class
我正在使用蝗虫 0.14.4。我正在测试休息api。我想模拟一个用户登录应用程序然后发出少量 GET 请求的场景。例如假设我希望用户在登录后发出 3 个 GET 请求。我希望用户计数为 3。在这种情况下,每个用户都应该登录并发出 3 个 GET 请求,并且蝗虫应该停止。所以一共12个请求。
我发现之前有一个选项-n可以指定请求的数量,但是0.14.4版本没有了。
我找到了一个类似的
这是我的代码片段:
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 调用时,locust 应该停止。有没有更简洁的方法来实现这一点?
使用 seq_task
时,应使用 TaskSquence 而不是 TaskSet 作为超级 class