参数化的例子

2021-06-27  本文已影响0人  HC2
from locust import HttpLocust, TaskSet, task,events
import queue
from random import randint
class UserBehavior(TaskSet):

    def on_start(self):

        try:
            data = self.locust.queueData.get()  # 获取队列里的数据
            print(data)
        except queue.Empty:

            # 队列取空后,直接退出
            print('no data exist')
            exit(0)

        print('actually user and password is {} '.format(data['username']))

        self.mobile = data['username']

        password = "e10adc3949ba59abbe56e057f20f883e"
        param = {"mobile": self.mobile, "password": password}
        headers = {"Content-Type": "application/json", "app_id": "101"}
        with self.client.post('https://xxx-xxx.xxx.com/xxxxxx', json=param, headers=headers) as response:
            if response.status_code == 200:
                self.token = response.json()["result"]["access_token"]

        self.header = {
            "access_token": self.token
        }
        print("========================================================登录",self.mobile)



    @task(3)
    def test1(self):

        url = 'https://xxx-xxx.xxx.com/xxxxxx'
        param = {
            "limit":5,
            "offset":0
        }
        with self.client.get(url,params=param,headers=self.header,catch_response = True) as response:
            if response.json()['code'] == 0:
                response.success()
            else:
                response.failure('Failed!')

    @task(1)
    def test2(self):
        '''用户执行下一页操作,占总操作次数的五分之一'''

        url = 'https://xxx-xxx.xxx.com/xxxxxx'
        param = {
            "limit": 5,
            "offset": 5
        }
        with self.client.get(url, params=param, headers=self.header, catch_response=True) as response:
            if response.json()['code'] == 0:
                response.success()
            else:
                response.failure('Failed!')

    @task(1)
    def test3(self):
        '''用户执行下一页操作,占总操作次数的五分之一'''

        url = 'https://xxx-xxx.xxx.com/xxxxxx'
        param = {
            "limit": 5,
            "offset": 10
        }
        with self.client.get(url, params=param, headers=self.header, catch_response=True) as response:
            if response.json()['code'] == 0:
                response.success()
            else:
                response.failure('Failed!')



class WebsiteUser(HttpLocust):
    host = 'https://test-xxxx.com/'
    task_set = UserBehavior
    queueData = queue.Queue()  # 队列实例化
    for count in range(0,2):   # 循环数据生成
        data = {
            "username": str(13729546445 + count)
        }
        queueData.put_nowait(data)
    min_wait = 1000
    max_wait = 1000

注意 队列的 queue.Queue() 数量必须大于或者等于最大并发数,否则最多并发数不准确

上一篇 下一篇

猜你喜欢

热点阅读