1 关联
import requests from locust import TaskSet, task, HttpLocust, between class TestLogin(TaskSet): token = None def on_start(self): # 调用登录接口,生成 token self.token = self.do_login() def do_login(self): url = ‘https://www.baidu.com/login‘ data = { "username": "admin1", "password": "admin123456" } with requests.post(url=url, # 使用 requests 发送请求,locust 不会进行结果统计 data=data, catch_response=True, # catch_response: 允许该请求被标记为失败 name=‘01_baidu_login‘) as resp: # name: 结果收集是会按照 name 进行归类 # 断言 if resp.status_code == 200: if resp.json()[‘code‘] == 1: return resp.json()[‘data‘][‘token‘] else: return None else: return None @task def do_something(self): url = ‘https://www.baidu.com/do‘ headers = { "token": self.token # 使用登录后生成的 token } with self.client.get(url=url, headers=headers, catch_response=True, # catch_response: 允许该请求被标记为失败 name=‘01_do_something‘) as resp: # name: 结果收集是会按照 name 进行归类 # 断言 if resp.status_code == 200: if resp.json()[‘code‘] == 1: resp.success() print(resp.json()) return resp.json()[‘data‘][‘token‘] else: resp.failure(‘01_baidu_login failed: code is ‘ + resp.json()[‘code‘]) print(resp.text) return None else: resp.failure(‘01_baidu_login failed: status is not 200‘) print(resp.text) return None pass class RunTest(HttpLocust): # 有变化。HttpLocust 改为 HttpUser/FastHttpUser task_set = {TestLogin} # 有变化。task_set 改为 tasks。且值为 dict wait_time = between(0, 0) host = "" if __name__ == ‘__main__‘: import os os.system(‘locust -f ./locustfile2.py --web-host=127.0.0.1 --web-port=9999‘)
原文:https://www.cnblogs.com/lizitestdev/p/14336161.html