• 【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即可,图形页面如下

  • 相关阅读:
    IOS开发-cell的动态高度
    IOS开发-视频,音频,录音简单总结
    cocoapods的安装及注意事项
    CUICatalog: Invalid asset name supplied: (null) _configureCellForDisplay:forIndexPath
    IOS开发—数据库的使用
    IOS开发-键盘通知自定义键盘
    IOS开发-手势简单使用及手势不响应处理办法
    IOS开发-UITextField代理常用的方法总结
    Linux Shell 编程学习笔记
    Java的进程内缓存框架:EhCache
  • 原文地址:https://www.cnblogs.com/Detector/p/8254158.html
Copyright © 2020-2023  润新知