基于python 性能测试工具locust
一、1、locust 它基于Python开发并且 Locust完全基于事件,因此可以在一台计算机上支持数千个并发用户。与许多其他基于事件的应用程序相比,它不使用回调。相反,它通过协程(gevent)机制使用轻量级进程,可以在一台计算机上支持数千个并发用户。与许多其他基于事件的应用程序相比,它不使用回调。相反,它通过协程(gevent)机制使用轻量级进程,这点使得 locust 单机承受并发量比jmeter大
三、安装: 1.pip install locust 2.查看安装版本 locust -V
四、使用locust 压测首页:GET 请求
示例1:
"""setup():任务级别全局初始化操作,运行期间仅执行一次"""
"""teardown():任务级别全局初始化操作,运行期间仅执行一次"""
"""on_start();用户界别初始化操作,任务执行期间,每个用户仅仅执行一次"""
"""on_stop(): 用户级别初始化操作,运行期间每个用户仅仅执行一次"""
"""普通用法() 具体执行的请求,任务运行期间,执行N次"""
get 接口示例一:
get 接口示例二:
编写测试环境:
python + flask
代码如下:
from flask import Flask
app = Flask(__name__)
@app.route("/index")
def index():
return "欢迎访问 flask 首页!"
if __name__ == '__main__':
app.run(debug = True)
编写locust 压测脚本:
from locust import HttpUser, TaskSet, task
class UserBehavior(TaskSet):
@task(1)
def index(self):
self.client.get("/index")
class WebsiteUser(HttpUser):
tasks = [UserBehavior]
min_wait = 5000
max_wait = 9000
if __name__ == "__main__":
import os
os.system("locust -f demo3.py --host=http://127.0.0.1:5000")
启动locust 访问http://localhost:8089 页面如下:
Number of users to simulate:设置模拟的用户总数
Hatch rate (users spawned/second):每秒启动的虚拟用户数
Start swarming:执行locust脚本
六 、使用locust 压测:POST 请求
import json
from locust import HttpUser, TaskSet, task
class UserBehavior(TaskSet):
@task(1)
def test_post(self):
data = {"username": "666666@qq.com", "password": "666"}
data_json = json.dumps(data)
r = self.client.post(url="https://httpbin.org/post", data=data_json)
class WebsiteUser(HttpUser):
tasks = [UserBehavior]
min_wait = 5000
max_wait = 9000
if __name__ == "__main__":
import os
os.system("locust -f demo3.py --host=https://httpbin.org/post")
locust post 请求代码 示例二:
from locust import HttpUser, TaskSet, task
import os
class MyTask(TaskSet):
def setup(self):
print("任务初始化")
def teardowm(self):
print("任务结束")
def onstart(self):
print("用户初始化")
def on_stop(self):
print("用户结束")
@task
def TestPost(self):
self.data = {"userName": "admin", "password": "1234"}
response = self.client.post("/pinter/com/login", data=self.data, name="post接口",catch_response = True)
response = response.json()
print(response)
class WebsiteUser(HttpUser):
task = tasks = [MyTask]
host = "http://localhost:8088"
min_wait = 5000
max_wait = 9000
if __name__ == "__main__":
os.system('locust -f testPost.py')