zoukankan      html  css  js  c++  java
  • 【Python】模块学习之locust性能测试

    背景

    locust是一个python的第三方库,用于做性能测试,可使用多台机器同时对一台服务器进行压测,使用其中一台机器作为主节点,进行分布式管理

    博主测试接口的时候一直是使用python脚本,后来有个需求需要做性能测试,我第一时间就想到了locust,不需要再对测试脚本进行编辑,而且对测试机的性能要求较低

    安装

    locust的安装很简单,可以直接使用pip

    pip install locustio

    测试代码

    说明:下列代码中只有sms()函数是最终测试的函数 ,其实的都是博主测试过程中的加密算法的辅助函数

    #! /usr/bin/python
    # coding:utf-8 
    """ 
    @author:Bingo.he 
    @file: locust_practis.py 
    @time: 2017/12/29 
    """
    from locust import HttpLocust, TaskSet, task
    import hashlib
    
    class UserBehavior(TaskSet):
    
        @staticmethod
        def param_order(dic):
            """
            参数转换函数
            :param dic: 字典类型参数
            :return: key1=value1&key2=value2
            """
            l = []
            if isinstance(dic, dict):
                for k, v in dic.items():
                    l.append(k + '=' + str(v))
                l.sort()
                # print ('&'.join(l))
                return '&'.join(l)
            else:
                return 'Not a dict'
    
        def get_signMsg(self, soure_para, bizKey):
            """
            API密钥生成函数
            :param soure_para : 传递的参数
            :param bizKey: 
            :return: str
            """
            param = self.param_order(soure_para)
            return hashlib.md5((param + bizKey).encode('utf8')).hexdigest()
    
        def pack_param(self):
            soure_para = {
                'bizNo': '0000001',
                'mobiles': '18565100000,18565100001,18565100002,18565100003,18565100004,18565100005,18565100006,','content': u'{}',
            }
            sign_msg = self.get_signMsg(soure_para, 'GyCK9XC4qYbs')
            soure_para['signMsg'] = sign_msg  # 添加签名信息
            return soure_para
    
        @task(1)  # 表示第一个执行,可以通过它组合指定场景
        def sms(self):
            param = self.pack_param()
            self.client.post("/sms", param)
    
    
    class WebsiteUser(HttpLocust):
        task_set = UserBehavior
        min_wait = 300  # 不同请求间间隔时间
        max_wait = 600

    运行命令

    locust -f ../locust_files/locust_practice.py --host=http://example.com

    参数说明

    -f 指定文件

    --host 指定要压测的服务器

     一般是监听在*:8089上,所以直接访问localhost:8089即可,图形页面如下

  • 相关阅读:
    《编程珠玑,字字珠玑》读书笔记完结篇——AVL树
    中国人,不能自卑,要自强于世界民族之林
    做饭方法
    创建一个强名称密钥文件+ 如何在 Visual C# .NET 中将程序集安装到全局程序集缓存中
    .Net 题目
    页面传值的另一种办法
    成功的12条黄金法则
    English学习资料大全
    .NET中的Serialization
    页面标签使用 实现定位
  • 原文地址:https://www.cnblogs.com/Detector/p/8254158.html
Copyright © 2011-2022 走看看