基于python locust库实现性能测试
Locust(俗称 蝗虫), 一个轻量级的开源压测工具,用Python编写。
安装
pip3 install locust
Python编写性能测试脚本
import jsonfrom locust import HttpLocust, TaskSet, task'''创建后台管理站点压测类,需要继承TaskSet可以添加多个测试任务'''class AdminLoadTest(TaskSet): # 用户执行task前调用 def on_start(self): pass # 用户执行task后调用 def on_stop(self): pass @task(1) def download(self): header = {'Content-Type': 'application/json'} data = { 'staff_id': 94 } data = json.dumps(data) self.client.post(’/get_know_list’, data=data, headers=header) @task(2) def body(self): header = {'Content-Type': 'application/json'} data = { 'staff_id': 94 } data = json.dumps(data) self.client.post(’/get_answer_list’, data=data, headers=header)class RunLoadTests(HttpLocust): ''' 创建运行压测类 ''' task_set = AdminLoadTest min_wait = 1000 max_wait = 50000 weight = 1if __name__ == '__main__': import os os.system('locust -f test_download.py --host=http://127.0.0.1:5000')
AdminLoadTest类继承TaskSet类,用以描述用户行为:
使用@task装饰的方法为一个事务,方法的参数用于指定该行为的执行权重,参数越大每次被用户执行的概率越高,默认为1(事务blogs()被执行的概率是bky_index()的2倍);
on_start():每个locust用户执行测试事务之前执行一次,用于做初始化的工作,如登录; on_stop(): 每次执行完测试事务之后执行一次。 RunLoadTests类用于设置性能测试属性: task_set:指向定义的一个用户行为类; min_wait:模拟用户在执行每个任务之间等待的最小时间,单位为毫秒; max_wait:模拟用户在执行每个任务之间等待的最大时间,单位为毫秒(min_wait和max_wait默认值为1000,因此,如果没有声明min_wait和max_wait,则locust将在每个任务之间始终等待1秒。); weight:一个文件中有多个locust用户类时,指定用户类的权重(默认新增locust用户时会随机选择一个用户类);启动
终端进入代码目录,输入 locust -f start.py --host=http://localhost:5000
使用os.system在代码里面写入启动命令
各个参数的含义
-f : 指定要运行的测试脚本文件 --host : 要加载主机的URL前缀,不指定时,读取WebsiteUser类中定义的host; --master : 单台机器不能模拟更多用户时,分布式模式,通过--master指定主进程;打开Locust的web界面使用上面的命令行启动Locust之后,应该打开浏览器并将其指向http://localhost:8089/(如果您在本地运行Locust)。
Number of total users to simulate : 设置模拟用户数;Hatch rate(users spawned/second) : 每秒产生(启动)的虚拟用户数;
设置好模拟用户后,点击Start swarming开始测试,测试结果如下:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持好吧啦网。
相关文章:
