Locust 是一個用於 HTTP 和其他協定的開源性能/負載測試工具。其開發人員友善的方法可讓您使用常規 Python 程式碼定義測試。
Locust 測試可以從命令列或使用其基於 Web 的 UI 運行。吞吐量、回應時間和錯誤可以即時查看和/或匯出以供以後分析。
您可以將常規 Python 庫導入到您的測試中,並且借助 Locust 的可插拔架構,它可以無限擴展。與使用大多數其他工具不同,您的測試設計永遠不會受到 GUI 或特定領域語言的限制。
若要立即開始,請參閱文件。
如果您希望使用者循環、執行一些條件行為或進行一些計算,您只需使用 Python 提供的常規程式設計結構即可。 Locust 在自己的 greenlet(輕量級進程/協程)中執行每個使用者。這使您能夠像正常(阻塞)Python 程式碼一樣編寫測試,而不必使用回呼或某些其他機制。因為您的場景“只是 Python”,所以您可以使用常規 IDE,並將測試作為常規程式碼進行版本控制(而不是使用 XML 或二進位格式的其他一些工具)
from locust import HttpUser, task, Betweenclass QuickstartUser(HttpUser):wait_time = Between(1, 2)def on_start(self):self.client.post("/login", json={"使用者名稱":"foo", "密碼":"bar"})@taskdef hello_world(self):self.client.get("/hello")self.client.get("/world")@task(3)def view_item(self):for item_id在範圍(10):self.client.get(f"/item?id={item_id}", name="/item")
Locust 可以輕鬆地執行分佈在多台機器上的負載測試。它是基於事件的(使用 gevent),這使得單一進程可以處理數千個並髮使用者。雖然可能有其他工具能夠在給定硬體上每秒執行更多請求,但每個 Locust 用戶的低開銷使其非常適合測試高度並發的工作負載。
Locust 具有使用者友善的 Web 介面,可即時顯示測試進度。您甚至可以在測試運行時更改負載。它還可以在沒有 UI 的情況下運行,從而易於用於 CI/CD 測試。
儘管 Locust 主要用於網站/服務,但它可以用於測試幾乎任何系統或協定。只需為您想要測試的內容編寫一個客戶端,或探索社群創建的一些客戶端。
Locust 的程式碼庫故意保持較小,並且不能立即解決所有問題。相反,我們嘗試使用常規 Python 程式碼輕鬆適應您可能遇到的任何情況。沒有什麼可以阻止你:
將即時報告資料傳送至 TimescaleDB 並在 Grafana 中視覺化
包裝呼叫以處理 REST API 的特殊性
使用完全自訂的負載形狀/輪廓
……
文件:docs.locust.io
支援/問題:StackOverflow
Github 討論:Github 討論
聊天/討論:Slack(註冊)
維護者:拉斯·霍姆伯格
使用者介面:安德魯鮑德溫
原創作者:喬納坦海曼
非常感謝我們所有的貢獻者
根據 MIT 許可證授權的開放原始碼(有關詳細信息,請參閱許可證文件)。