python學習筆記(locust效能測試模組)
阿新 • • 發佈:2018-12-11
locust是基於python的效能測試工具、支援python2.7及其以上的版本、相對於主流的LR與Jmeter工具使用的方式不一樣、locust是通過編寫python程式碼來完成效能測試的。
通過LR與Jmeter都是一個特定平臺、我們只能在這個平臺上使用、侷限性很大。但是利用locust通過python可以進行效能測試的同時,也能掌握python語言的使用,且因為是開發語言,測試過程中可以編寫自己需要的功能內容。
博主這裡就簡單的整理下如何使用locust模組,主要的三個類: HttpLocust, TaskSet, task
TaskSet是任務類、定義待測試的任務程式碼集如下的UserBehavior的類,task是子任務方法
# -*- coding: utf_8 -*- # 檔名稱:main_pt.py # locust基礎效能測試模板 # 時間:2017-10-19 from locust import HttpLocust, TaskSet, task import subprocess import json # 效能測試任務類 TaskSet. class UserBehavior(TaskSet): # 開始 def on_start(self): pass # 任務 @task(1) def getTagVals(self): u""" request_url:請求路徑 request_params:請求頭引數 request_json:請求json引數 """ request_url = "/xxx/tag/getTagVals" (待測試的路徑) request_params = { "nonce": "abcdefg", "_type": None, "target": "CLNJ01", "timestamp": 1507860000, "apiId": "EC", "apiSign": "D41D8CD98F00B204E9800998ECF8427E" } request_json = { "tagKey": 25 } response = self.client.post( url=request_url, params=request_params, json=request_json ) if response.status_code != 200: print u"返回異常" print u"請求返回狀態碼:", response.status_code elif response.status_code == 200: print u"返回正常" # 這裡可以編寫自己需要校驗的返回內容 # content = json.loads(response.content)["content"] # if content["tagKey"] == 25: # print u"校驗成功" # print json.dumps(content, encoding="UTF-8", ensure_ascii=False) # 效能測試配置 class MobileUserLocust(HttpLocust): u""" min_wait :使用者執行任務之間等待時間的下界,單位:毫秒。 max_wait :使用者執行任務之間等待時間的上界,單位:毫秒。 """ # weight = 3 task_set = UserBehavior host = "http://xxx" (待測試的ip或者域名) min_wait = 3000 max_wait = 6000 if __name__ == "__main__": subprocess.Popen("locust -f main_pt.py", shell=True)
最後HttpLocust類是用來設定效能測試的配置、如待測試的host、待測試的任務集task_set
如何執行:首先開啟到檔案路徑下、然後直接執行指令碼 python main_pt.py
執行成功後即可訪問 locust的 web UI介面 :http://localhost:8089
提示輸入的內容是 模擬的使用者總數 和 每秒鐘併發的使用者數量、點選開始按鈕即可
可以檢視測試任務的效能結果 上圖圈出的 RPS是 每秒使用者數、FAILUSERS是 失敗率
可以 STOP 中止測試 也可以 Edit 重新編輯效能測試的場景、還可以檢視後臺的列印內容: