官方文档
https://docs.locust.io/en/stable/what-is-locust.html
介绍
1、Locust是一个分布式性能测试的开源工具
2、一台机器支持数千用户进行压测
3、过程可以通过web UI实时监控
4、主要面向web,但不限于web
5、locust的http连接在不同系统有不同限制(本身不限制)
安装
python版本要求:3.6、3.7、3.8
pip install locust
locust --help
使用
先按照官方示例代码进行
import random
from locust import HttpUser, task, between
class QuickstartUser(HttpUser):
wait_time = between(5, 9)
@task
def index_page(self):
self.client.get("/hello")
self.client.get("/world")
@task(3)
def view_item(self):
item_id = random.randint(1, 10000)
self.client.get(f"/item?id={item_id}", name="/item")
def on_start(self):
self.client.post("/login", {"username":"foo", "password":"bar"})
使用如下指令运行该文件:
locust --web-host 10.12.1.82 --web-port 1234 -f D:360MoveDataUserslenovoDesktopTengine2_AutoTestScriptPerformance-TrainingConcurrentLogin.py
web API界面如下:
随便输入打开界面:
显然,因为我们用的官方实例,没有起到数据交互的作用,那么,我们基于官方实例,改造一下,成为我们公司的实例吧!
首先还是登录接口,根据locust的规则,结合本公司的登录接口,将脚本改造如下:
import random
from locust import HttpUser, task, between
class QuickstartUser(HttpUser):
wait_time = between(5, 9)
@task
def index_page(self):
path = "/oas-cloud/platform/uos/um/web/group/userList"
self.client.post(path)
@task(3)
def view_item(self):
item_id = random.randint(1, 10000)
self.client.get(f"/item?id={item_id}", name="/item")
def on_start(self):
data = {
"appid": "1",
"methodname": "login-cas",
"token": "",
"param": "{"loginName":"admin","userPwd":"b86c381f8895b1f358ac35290254300e","platformType":1,"operatorId":null}"
}
path = "/oas-cloud/platform/uos/uum/web/user/login-cas"
self.client.post(path, data)
我这里只改对了on_start, 而index_page是随意改的,如图已经有数据,说明,我们已经调通了locust。
总结起来,如文档所述:简单实用。
阅读全文