7

我通过 API 调用测试,

locust -f locustfile.py --host=http://localhost --no-web  --hatch-rate=20 --clients=10000

并得到了结果

 Name                                                          # reqs      # fails     Avg     Min     Max  |  Median   req/s
--------------------------------------------------------------------------------------------------------------------------------------------
 POST 8000/queries.json                                           137     0(0.00%)       5       2      23  |       5   11.00

--------------------------------------------------------------------------------------------------------------------------------------------
 Total                                                            708     0(0.00%)    

我想将此结果写入文件。谁能帮我这个?

下面是python中的代码

@task(1)
def test_topview(self):
    post_data_topview = """{ "category": "321",   "num": 20,   "genderCat" : ["23"] }"""
    with self.client.request(method="POST", url="http://192.168.1.107:8001/queries.json", headers= {"Content-Type" : "application/json"}, data = post_data_topview, catch_response = True ) as response:
        if not matched(response.content) :
            response.failure("No content")

非常感谢。

4

5 回答 5

9

更新

此版本--csv添加了使用选项保存 csv 文件。因此,您可以运行以下命令将测试结果保存为foo_requests.csvfoo_distribution.csv

locust -f locustfile.py --host=http://localhost --no-web  --hatch-rate=20 --clients=10000 --only-summary --csv=foo

对于0.8以下的版本

已提交保存 Locust 的结果,但尚未合并到 Locust。但是,您可以使用此提交手动更新它。它正在添加一个新参数--statsfile=result.log以保存结果。

那么完整的命令应该是这样的

locust -f locustfile.py --host=http://localhost --no-web  --hatch-rate=20 --clients=10000 --only-summary --statsfile=result.log

您可以查看此帖子以更新 Locust 并检查日志结果。

于 2016-01-11T13:14:54.613 回答
5

在 statsfile 选项生效之前的另一个选择是将 stderr 重定向到输出文件,这显然是统计信息记录到的位置:

 locust -f locustfile.py --host=http://example.com --no-web --clients=20  --hatch-rate=20 --num-request=1000  --only-summary  > locust.log   2>&1
于 2016-03-11T13:08:35.697 回答
3

我试图在文件中打印蝗虫统计数据但没有成功,但您可以使用事件挂钩来完成:http : //docs.locust.io/en/latest/api.html#available-hooks

您可以向事件 request_success 和 request_failure 添加一个函数,因此每次请求成功或失败时,都会调用您的钩子函数,以便将请求数据放入列表或您想要的任何变量中。

然后,您可以轻松地将数据打印到 csv 文件中,例如

希望对你有帮助

import locust.events
from locust import HttpLocust, TaskSet


class LocustUser(HttpLocust):
    task_set = TaskSet
    min_wait = 1000
    max_wait = 1000

    request_success_stats = [list()]
    request_fail_stats = [list()]

    def __init__(self):
        locust.events.request_success += self.hook_request_success
        locust.events.request_failure += self.hook_request_fail
        locust.events.quitting += self.hook_locust_quit

    def hook_request_success(self, request_type, name, response_time, response_length):
        self.request_success_stats.append([name, request_type, response_time])

    def hook_request_fail(self, request_type, name, response_time, exception):
        self.request_fail_stats.append([name, request_type, response_time, exception])

    def hook_locust_quit(self):
        self.save_success_stats()

    def save_success_stats(self):
        import csv
        with open('success_req_stats.csv', 'wb') as csv_file:
            writer = csv.writer(csv_file)
            for value in self.request_success_stats:
                writer.writerow(value)
于 2016-08-22T10:34:08.503 回答
1

要添加到 2016 年的 Rays 答案。在当前的 locust 版本 1.0.3 中,您需要像这样添加事件侦听器

events.request_success.add_listener(self.hook_request_success)

而不是使用 +=

我用它来汇总响应并将其写入数据库以进行进一步分析

于 2020-06-16T07:24:18.027 回答
0

蝗虫 -f loustfile.py -c 1 -r 1 -n 100 --host= http://localhost:4000 --no-web --only-summary > ../result/locustTest.log 2>&1

于 2017-11-22T02:31:06.307 回答