我正在考虑将刺槐用于某些性能测试。我对Python更熟悉,并且发现蝗虫比JMeter JMX更容易阅读。
我习惯使用JMeter进行的一件事是通过多次运行生成自己的平均值,90pct,95pct和99pct报告。为此,我编写了一个脚本,该脚本解析JMeter日志,其中包含有关每个请求的信息(响应时间,有效负载大小等),然后将所有运行组合到单个数据集中,并生成平均值和百分位数。 / p>
我似乎无法找到一种方法来获得这种详细的蝗虫日志记录。我试过了--logfile =,但是该文件不包含有关单个请求的任何内容。我已经尝试过--csv =,并且输出仅包含摘要信息-尝试确定多个运行组合中的百分位数时将无法使用该信息。
是否可以获取有关每个请求的详细日志信息?
答案 0 :(得分:2)
我不确定这是否是最简单的方法,但是您可以使用locust event hooks mechanism。
让我们从命令行python内置的http服务器开始:
python -m http.server
并创建具有以下内容的文件example.py
:
#!/usr/bin/env python
from locust import HttpLocust, TaskSet, task, events
class UserBehavior(TaskSet):
""" Defines user behaviour in traffic simulation """
@task()
def index(self):
self.client.get("/")
class WebsiteUser(HttpLocust):
""" Defines user that will be used in traffic simulation """
task_set = UserBehavior
min_wait = 3000
max_wait = 5000
def setup(self):
self.file = open('stats.csv', 'w')
events.request_success += self.hook_request_success
def teardown(self):
self.file.close()
# hook that is fired each time the request ends up with success
def hook_request_success(self, request_type, name, response_time, response_length, **kw):
self.file.write(request_type + ";" + name + ";" + str(response_time) + ";" + str(response_length) + "\n")
现在从命令行运行example.py
所在的文件夹:
locust -f example.py --no-web -c 10 -r 1 --host=http://localhost:8000
如果过一会儿停止它,您将在stats.csv
文件中找到每个成功请求的详细信息。