zoukankan      html  css  js  c++  java
  • 性能测试-Locust参数篇

    1、循环取可以重复使用的数据

    csvData.csv

    1,1
    2,2
    3,3
    4,4
    5,5
    6,6
    7,7
    8,8
    9,9
    

    locust2.py

    from locust import TaskSet, task, HttpUser, HttpLocust, between, tag, constant
    import csv
    
    
    
    class UserBehavior(TaskSet):
    
        def on_start(self):
            self.index = 0
    
        # @tag('getJoke分页查询')
        @task
        def test_visit(self):
    
    
            self.index = (self.index + 1 ) % len(self.parent.share_data)
            url = "/getJoke?page=" + self.parent.share_data[self.index] + "&count=10&type=video" + self.parent.share_data[self.index]
    
            print('visit url: %s' % url, self.parent.share_data)
            self.client.get(url, name='getJoke分页查询')
    
    class WebsiteUser(HttpUser):
        host = 'https://api.apiopen.top'
        # task_set = UserBehavior
        tasks = [UserBehavior]
        # my_data = [1, 3, 5]
        share_data = []
    
        with open('csvData.csv', newline='') as csvfile:
            # 此方法:当文件不用时会自动关闭文件
            csvReader = csv.reader(csvfile)
            for content in csvReader:
                # print(content)
                share_data.append(content[1])
        # min_wait = 1000
        # max_wait = 3000
        wait_time = between(1, 3)
    

    2、不循环取数据,测试数据唯一

    使用队列存储数据

    from locust import TaskSet, task, HttpUser
    import queue
    class UserBehavior(TaskSet):
        @task
        def test_register(self):
            try:
                data = self.parent.user_data_queue.get()
            except queue.Empty:
                print('account data run out, test ended.')
                exit(0)
            print('register with user: {}, pwd: {}'.format(data['username'], data['password']))
            payload = { 'username': data['username'], 'password': data['password'] }
            self.client.post('/register', data=payload)
    
    class WebsiteUser(HttpUser):
        host = 'http://debugtalk.com'
        # task_set = UserBehavior
        tasks = [UserBehavior]
        user_data_queue = queue.Queue()
        for index in range(100):
            data = { "username": "test%04d" % index,
                     "password": "pwd%04d" % index,
                     "email": "test%04d@debugtalk.test" % index,
                     "phone": "186%08d" % index,
                     }
            user_data_queue.put_nowait(data)
        min_wait = 1000
        max_wait = 3000
    

    3、循环取数据,测试数据唯一

    from locust import TaskSet, task, HttpLocust
    import queue
    class UserBehavior(TaskSet):
        @task
        def test_register(self):
            try:
                data = self.parent.user_data_queue.get()
            except queue.Empty:
                print('account data run out, test ended.')
                exit(0)
            print('register with user: {}, pwd: {}'.format(data['username'], data['password']))
            payload = { 'username': data['username'], 'password': data['password'] }
            self.client.post('/register', data=payload)
            self.parent.user_data_queue.put_nowait(data) # 将取出的数据重新写入队列
    
    class WebsiteUser(HttpLocust):
        host = 'http://debugtalk.com'
        # task_set = UserBehavior
        tasks = [UserBehavior]
        user_data_queue = queue.Queue()
        for index in range(100):
            data = { "username": "test%04d" % index,
                     "password": "pwd%04d" % index,
                     "email": "test%04d@debugtalk.test" % index,
                     "phone": "186%08d" % index, }
            user_data_queue.put_nowait(data)
        min_wait = 1000
        max_wait = 3000
    

    个人博客 蜗牛

  • 相关阅读:
    Linux速成(二)
    Linux速成(一)
    突如其来的有赞电话面试!
    mark一下岗位
    游戏道具上下架设计
    ET框架学习-ECS组件式编程的基本思想之于UNITY
    一个类似与地平线中的车漆画板制作
    unity用刚体做玩家移动和玩家看向鼠标点
    C#简单的消除注释
    拉格朗日差值法, 快速排序.
  • 原文地址:https://www.cnblogs.com/codeobj/p/13714262.html
Copyright © 2011-2022 走看看