Locust:如何通过API调用测试

时间:2014-08-21 09:07:12

标签: python load-testing locust

我想通过API调用Locust负载测试,以便能够从CI工具启动测试。

我没有看到关于这种情况的大量文档,没有" Runner"或locust API文档中的类似类。

我检查过"蝗虫"在Windows中安装后可用的命令。它是一个.exe,因此不确定它的作用以及它是如何实际启动测试的

所以,具体问题是,是否存在从另一个Python程序开始测试的接口

4 个答案:

答案 0 :(得分:6)

目前,除命令行界面外,没有用于控制蝗虫的文档API。 CLI可用于开始运行负载测试,但目前无法在没有Web UI的情况下运行分发的locust。

您还可以将Web UI用作API,并且只需从您的程序中自行生成浏览器发送到Web UI的HTTP请求。

Windows中创建的locust.exe文件(由python的setuptools创建)只是一个小包装器,将在locust/main.py中运行main()

答案 1 :(得分:5)

只需在蝗虫Web UI中执行操作,然后在python中执行此操作。

如果您在蝗虫用户界面中监控网络,您会注意到调用群组只是对127.0.0.1:8089/swarm的GET请求,其中包含两个参数locust_counthatch_rate

回答你的问题,这是你要求的api和例子:

import requests

payload = {
'locust_count': 12,
'hatch_rate': 22,
}

res = requests.get('http://127.0.0.1:8089/swarm', params=payload)
print(res.json())

没有测试它,让我知道它是否不起作用。

答案 2 :(得分:4)

我喜欢上面的timfeirg的回答。你在使用locust时已经安装了python并且我们只需要运行python文件的想法很好。 只有来自timfeirg的代码没有用,所以稍微修改了一下:

import requests

lc = 10
hr = 10

response = requests.post("http://127.0.0.1:8089/swarm", {"locust_count":lc, "hatch_rate":hr})
print(response.content)

答案 3 :(得分:2)

尝试在shell上使用curl请求来模拟您的浏览器:

curl 'http://localhost:8089/swarm' -H 'Cookie: l10n-locale=en_GB; l10n-submitter=; l10n-license-agreed=false; JSESSIONID.7094a8b9=16g03c8dktw4g1x8ag027nbvl5; screenResolution=1280x800' -H 'Origin: http://localhost:8089' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: en-US,en;q=0.8,tr;q=0.6' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36' -H 'Content-Type: application/x-www-form-urlencoded' -H 'Accept: */*' -H 'Referer: http://localhost:8089/' -H 'X-Requested-With: XMLHttpRequest' -H 'Connection: keep-alive' -H 'X-FirePHP-Version: 0.0.6' --data 'locust_count=5&hatch_rate=1' --compressed
{"message": "Swarming started", "success": true}ubuntu@ip-172-31-16-111:~$

设置用户和填充率编辑数据:

--data 'locust_count=5&hatch_rate=1'