我想通过API调用Locust负载测试,以便能够从CI工具启动测试。
我没有看到关于这种情况的大量文档,没有" Runner"或locust API文档中的类似类。
我检查过"蝗虫"在Windows中安装后可用的命令。它是一个.exe,因此不确定它的作用以及它是如何实际启动测试的
所以,具体问题是,是否存在从另一个Python程序开始测试的接口
答案 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_count
和hatch_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'