在特定数量的请求后停止蝗虫

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