前言提到性能测试,大部分小伙伴想到的就是LR和jmeter这种工具,小编一直不太喜欢写这种工具类的东西,我的原则是能用代码解决的问题,尽量不去用工具。 环境准备: Locust简介Locust是一款易于使用的分布式用户负载测试工具。它用于对网站(或其他系统)进行负载测试,并确定系统可以处理多少并发用户。 gevent是第三方库,通过greenlet实现协程。greenlet是python的并行处理的一个库。 python 有一个非常有名的库叫做 stackless ,用来做并发处理, 主要是弄了个叫做tasklet的微线程的东西, 而greenlet 跟stackless的最大区别是greenlet需要你自己来处理线程切换, 就是说,你需要自己指定现在执行哪个greenlet再执行哪个greenlet。 环境安装Locust支持Python 2.7, 3.4, 3.5, and 3.6的版本,小编的环境是python3.6直接用pip安装就行
安装完成后,使用pip查看版本号0.9.0
使用—help查看帮助信息
快速开始locust里面请求是基于requests的,每个方法请求和requests差不多,请求参数、方法、响应对象和requests一样的使用,之前学过requests库的,这里就非常简单了
# 保存为demo.py
# coding:utf-8
from locust import HttpLocust,TaskSet,task
class BlogDemo(TaskSet):
'''用户行为:打开我的博客首页demo'''
@task(1)
def open_blog(self):
# 定义requests的请求头
header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"}
r = self.client.get("/yoyoketang", headers=header, verify=False)
print(r.status_code)
assert r.status_code == 200
class websitUser(HttpLocust):
task_set = BlogDemo
min_wait = 3000 # 单位毫秒
max_wait = 6000 # 单位毫秒
if __name__ == "__main__":
import os
os.system("locust -f demo.py --host=https://www.cnblogs.com") 代码注解: WebsiteUser()类用于设置性能测试。 启动locust启动locust可以直接在pycharm里面执行上面的代码,运行后编辑器出现两行 也可以通过cmd执行
8089是该服务启动的端口号。由于是在本机上搭建的locust,所以可以直接在浏览器输入http://localhost:8089/打开,
效果展示设置虚拟用户数30,每秒启动5个用户,点击Start swarming 开始运行
点stop可以停止测试 New test可以重新设置用户数 Charts图标展示 三个图标分别是
|
|