基于python 性能测试工具locust

一、1、locust 它基于Python开发并且 Locust完全基于事件,因此可以在一台计算机上支持数千个并发用户。与许多其他基于事件的应用程序相比,它不使用回调。相反,它通过协程(gevent)机制使用轻量级进程,可以在一台计算机上支持数千个并发用户。与许多其他基于事件的应用程序相比,它不使用回调。相反,它通过协程(gevent)机制使用轻量级进程,这点使得 locust 单机承受并发量比jmeter大

 

二、官方网站:https://locust.io

三、安装:  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')


 

 





posted @ 2022-03-11 16:09  微风轻哨  阅读(614)  评论(0编辑  收藏  举报