【Python】模块学习之locust性能测试
背景
locust是一个python的第三方库,用于做性能测试,可使用多台机器同时对一台服务器进行压测,使用其中一台机器作为主节点,进行分布式管理
博主测试接口的时候一直是使用python脚本,后来有个需求需要做性能测试,我第一时间就想到了locust,不需要再对测试脚本进行编辑,而且对测试机的性能要求较低
安装
locust的安装很简单,可以直接使用pip
pip install locustio
测试代码
说明:下列代码中只有sms()函数是最终测试的函数 ,其实的都是博主测试过程中的加密算法的辅助函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | #! /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即可,图形页面如下
文中可能存在描述不正确,欢迎大神们指正补充!
感谢阅读,如果觉得对你有帮助,就在右下角点个赞吧,感谢!
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律