我想通过 API 调用 Locust 负载测试,以便能够从 CI 工具启动测试。
我没有看到太多关于这种情况的文档,蝗虫 API文档中没有“Runner”或类似的类。
在 Windows 中安装后,我检查了可用的“蝗虫”命令。它是一个 .exe,所以不确定它的作用以及它实际上是如何开始测试的
所以,具体的问题是,是否有一个接口可以从另一个 Python 程序开始测试
我想通过 API 调用 Locust 负载测试,以便能够从 CI 工具启动测试。
我没有看到太多关于这种情况的文档,蝗虫 API文档中没有“Runner”或类似的类。
在 Windows 中安装后,我检查了可用的“蝗虫”命令。它是一个 .exe,所以不确定它的作用以及它实际上是如何开始测试的
所以,具体的问题是,是否有一个接口可以从另一个 Python 程序开始测试
目前,除了命令行界面外,没有用于控制 locust 的文档化 API。CLI 可用于开始运行负载测试,但目前无法在没有 Web UI 的情况下运行 locust。
您还可以将 Web UI 作为 API 使用,只需发出 HTTP 请求,浏览器自己从您的程序发送到 Web UI。
在 Windows 中(由 python 的 setuptools 创建)的 locust.exe 文件只是一个可以运行的小包装器main()
在locust/main.py中运行
只需在 locust web UI 中执行您在 python 中执行的操作即可。
如果您在 locust UI 中监控网络,您会注意到调用 swarm 只是一个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())
没测试,如果不行请告诉我。
我喜欢上面 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)
在 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'