我通过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")
非常感谢。
答案 0 :(得分:7)
<强>更新强>
使用release添加了使用选项--csv
保存csv文件。因此,您可以运行以下命令将测试结果保存为foo_requests.csv
和foo_distribution.csv
locust -f locustfile.py --host=http://localhost --no-web --hatch-rate=20 --clients=10000 --only-summary --csv=foo
适用于0.8以下的版本
已经提交了保存Locust的结果但是它还没有合并到Locust。但是,您可以使用this commit手动更新它。它正在添加一个新参数--statsfile=result.log
以保存结果。
然后完整的命令应该如下所示
locust -f locustfile.py --host=http://localhost --no-web --hatch-rate=20 --clients=10000 --only-summary --statsfile=result.log
您可以检查this post以更新Locust并检查日志结果。
答案 1 :(得分:3)
在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
答案 2 :(得分: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)
答案 3 :(得分:0)
locust -f loustfile.py -c 1 -r 1 -n 100 --host = http://localhost:4000 --no-web --only-summary&gt; ../result/locustTest.log 2&gt;&amp; 1
答案 4 :(得分:0)
要添加到2016年的Rays答案中。 在当前的蝗虫版本1.0.3中,您需要像这样添加事件监听器
events.request_success.add_listener(self.hook_request_success)
代替使用+ =
我用它来汇总响应并将其写入数据库以供进一步分析