写 locustFile-登堂入室
1. 自动生成 Locustfile
har2locust
工具
- 用途: 从浏览器录制的 HAR 文件生成 Locust 测试脚本。对不熟悉手动编写 Locust 脚本的初学者特别有用。
- 使用方法: 使用 HAR 文件运行
har2locust
以生成 Locust 脚本。请注意,这个工具仍在 beta 阶段,可能不会总是生成准确的结果。
2. 用户类
定义
- 用途: 代表性能测试中的一种用户类型或场景。每个用户类定义了模拟用户将执行的特定行为和任务。
- 属性:
wait_time
: 确定任务执行之间的延迟。weight
: 调整测试中不同用户类型的比例。fixed_count
: 指定确切的实例数。
等待时间变体
constant
: 固定延迟时间。between(min, max)
: 在最小值和最大值之间的随机延迟。constant_throughput(rate)
: 确保任务以特定速率运行(例如每秒 500 次迭代)。constant_pacing(interval)
: 确保任务每隔指定的时间运行一次(吞吐量的数学反向)。
示例
from locust import User, task, between
class MyUser(User):
wait_time = between(0.5, 10) # 随机等待时间,介于 0.5 到 10 秒之间
@task
def my_task(self):
print("执行 my_task")
自定义等待时间方法
class MyUser(User):
last_wait_time = 0
def wait_time(self):
self.last_wait_time += 1
return self.last_wait_time
权重和固定计数
- 权重: 调整不同用户类的实例数量。
- 固定计数: 设置确切的实例数,忽略权重。
示例
class WebUser(User):
weight = 3
class MobileUser(User):
weight = 1
3. Host 属性
- 用途: 定义所有请求的基本 URL。该属性会自动添加到请求路径中。
- 使用方法: 可以在 Locust 脚本中设置,也可以通过命令行或 Web 界面覆盖。
4. 任务
任务声明
@task
装饰器: 用于定义用户将执行的任务。可以包括权重参数以影响任务选择的概率。- 任务属性: 另一种声明任务的方法。可以使用列表或字典来定义任务及其权重。
示例
from locust import User, task, constant
class MyUser(User):
wait_time = constant(1)
@task
def task1(self):
pass
@task(3)
def task2(self):
pass
任务属性示例
from locust import User, constant
def my_task(user):
pass
class MyUser(User):
tasks = [my_task]
wait_time = constant(1)
5. 任务标记
- 用途: 允许根据标签过滤要执行的任务。
- 使用方法: 为任务应用标签,然后使用
-tags
或-exclude-tags
参数在测试运行时包含或排除任务。
示例
from locust import User, task, tag
class MyUser(User):
@tag('tag1')
@task
def task1(self)