蝗虫需求统计

时间:2018-11-05 21:19:14

标签: performance-testing locust

我正在考虑将刺槐用于某些性能测试。我对Python更熟悉,并且发现蝗虫比JMeter JMX更容易阅读。

我习惯使用JMeter进行的一件事是通过多次运行生成自己的平均值,90pct,95pct和99pct报告。为此,我编写了一个脚本,该脚本解析JMeter日志,其中包含有关每个请求的信息(响应时间,有效负载大小等),然后将所有运行组合到单个数据集中,并生成平均值和百分位数。 / p>

我似乎无法找到一种方法来获得这种详细的蝗虫日志记录​​。我试过了--logfile =,但是该文件不包含有关单个请求的任何内容。我已经尝试过--csv =,并且输出仅包含摘要信息-尝试确定多个运行组合中的百分位数时将无法使用该信息。

是否可以获取有关每个请求的详细日志信息?

1 个答案:

答案 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文件中找到每个成功请求的详细信息。