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