我正在考虑使用 Locust 进行一些性能测试。我对 Python 更熟悉,发现 Locust 比 JMeter JMX 更容易阅读。
我习惯使用 JMeter 做的一件事是从多次运行中生成我自己的平均值、90%、95% 和 99% 报告。为此,我编写了一个脚本来解析 JMeter 日志,其中包含每个请求的信息(响应时间、有效负载大小等),然后将所有运行合并到单个数据集中并生成平均值和百分位数。
我似乎找不到一个选项来获得这种级别的详细日志记录。我尝试过 --logfile= 但该文件不包含有关单个请求的任何内容。我尝试过 --csv= ,输出仅包含摘要信息 - 在尝试确定运行组合中的百分位数时无法使用该信息。
有没有办法获取每个请求的详细日志信息?
我不确定这是否是最简单的方法,但您可以使用locust事件钩子机制 https://docs.locust.io/en/stable/api.html#event-hooks.
让我们在命令行中启动python内置的http服务器:
python -m http.server
并创建文件example.py
包含以下内容:
#!/usr/bin/env python
from locust import HttpUser, TaskSet, task, events
stat_file = open('stats.csv', 'w')
class UserBehavior(TaskSet):
""" Defines user behaviour in traffic simulation """
@task()
def index(self):
self.client.get("/")
class WebsiteUser(HttpUser):
""" Defines user that will be used in traffic simulation """
tasks = {UserBehavior:2}
min_wait = 3000
max_wait = 5000
# hook that is fired each time the request ends up with success
@events.request_success.add_listener
def hook_request_success(request_type, name, response_time, response_length, **kw):
stat_file.write(request_type + ";" + name + ";" + str(response_time) + ";" + str(response_length) + "\n")
@events.quitting.add_listener
def hook_quitting(environment, **kw):
stat_file.close()
现在在同一个文件夹中example.py
生命从命令行运行:
locust -f example.py --headless -u 10 -r 1 --host=http://localhost:8000
如果你在一段时间后停止它,你会发现stats.csv
每个成功请求的文件详细信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)