1月23日总结

lmyy / 2024-01-25 / 原文

ocust官网介绍:Locust 是一个用于 HTTP 和其他协议的开源性能/负载测试工具。其对开发人员友好的方法允许您在常规 Python 代码中定义测试。Locust测试可以从命令行运行,也可以使用其基于 Web 的 UI 运行。可以实时查看吞吐量、响应时间和错误和/或导出以供以后分析。
二.环境搭建

1.python 3.7.4

2.Locust 2.17(终端可使用pip安装:pip install locust)
三.基本用法
1.我们先来看下一个简单的实例
复制代码

from locust import TaskSet, between, task, HttpUser

class api(TaskSet):

@task(1)
def on_one(self):
    data = self.client.post(url="https:.......", json={
        "username", "",
        "password", ""
    })
    print(data.json())

@task(2)
def index(self):
    data = self.client.get("https:..........")
    print(data.json())

def on_stop(self):
    print("运行结束")

def on_start(self):
    print("初始化")

class UserRun(HttpUser):
tasks = [api]
wait_time = between(1, 5) # 默认等待时间0s

复制代码

1)使用locust导入了四个类

Taskset:上例中api继承了该类,主要编写一些接口请求信息,client.get(),client.post()表get和post请求。

between:设置每个任务直接等待的间隔,单位为s,例:between(1,5)每个任务直接等待1-5s再去运行。出来between,还有constant可设置固定等待时间,例:constant(5)。

task:设置用例权重,数字越大,权重越大,默认为1。

httpuser:定义一个用户的基类,相当于运行类,通过tasks列表来运行我们想要的api。这里写法有两种(例1:tasks=[api1,api2],集合形式,会随机选取一个执行的任务,选取的概率相同。例2:tasks = {api1: 15, api2: 1},字典的形式,数字代表权重,会随机选取一个执行的任务,数字越大,被执行的概率越大)。

class UserRun(HttpUser):
# tasks = [api]
tasks = {api: 15, api_one: 1}
wait_time = between(2, 3)

2)上面可以看到api类中有on_start()和on_stop()两个方法,可用来初始化和结束操作
2.那么前置条件都准备好了,接下来就是如何运行了

1)在终端执行:locust -f python_file_name.py

执行后会得到一个http链接,默认ip应该是0.0.0.0。复制url到浏览器打开,如果无法打开的话,就在venv\Lib\site-packages\locust\argument_parser.py下修改默认ip即