Locust参数化之queue实战

需求:用4000用户随机登录调用接口性能压测
思路
1、随机取用户函数
2、将随机取用户函数放到队列中
3、使用的时候从队列依次取出

from locust import HttpUser, task, between,TaskSet
from gevent._semaphore import Semaphore
import queue
from cloudDataFactory.publicCenter.excle_data import ExcelHander
from cloudDataFactory.cloud_tools.operopration import get_client_token
import os
import random
#获取账号信息
filepath = r'C:\Users\WS\Desktop\uc_user_wsid_email.xls'
wsid_dict = ExcelHander(filepath).ExcelDick("uc_user_wsid_email")["uc_user_wsid_email"]


def random_wsid():
#随机取用户函数
    return random.choice(wsid_dict)


wsid_email = random_wsid()

def GetData():
    s=queue.Queue(maxsize=0)
    for i in range(4000):
#将用户信息放到队列
        s.put_nowait(wsid_email)
    return s
class wgpTasks(TaskSet):

    @task
    def messagesV1(self):
        # wsid_email = random_wsid()
#使用的时候从队列依次取出
        Authorization = json.loads(get_client_token(username=wsid_email["email"], password="1234qwer"))["data"][
            "access_token"]
        headers = {
        }
        self.client.get('/v1/wms/rule/messages?pid=846', headers=headers)

    @task
    def messagesV2(self):
        # wsid_email = random_wsid()
        #使用的时候从队列依次取出
        Authorization = json.loads(get_client_token(username=wsid_email["email"], password="1234qwer"))["data"][
            "access_token"]
        headers = {
            "Authorization": f"Bearer {Authorization}"
        }
        self.client.get(
            '/v2/xxxx',
            headers=headers)

    @task
    def messagesRuleV1(self):
        # wsid_email = random_wsid()
        #使用的时候从队列依次取出
        Authorization = json.loads(get_client_token(username=wsid_email["email"], password="1234qwer"))["data"][
            "access_token"]
        headers = {
        }
        self.client.get(
            '/v1xxxxxx',
            headers=headers)
class websitUser(HttpUser):
    tasks = [wgpTasks]
    wait_time = between(1, 3)
    host = "xxxxxx"
    #队列取数
    queueData=GetData()


if __name__ == "__main__":
    os.system(" locust -f .\performace_locust1.py --web-host=10.90.12.148 --web-port=8090")```

你可能感兴趣的:(python,开发语言)