因近期公司需要對ocr類產品(python語言編寫的接口)進行壓測,而之前的壓測工具就meter、loadrunner對python語言的代碼都不太兼容,故而找到了locust工具。
使用之前在網上對locust工具進行了些瞭解,發現它還是比較簡單的,入門很快,輕便,而且還有較多人使用,相信測試結果還是比較準確的,誤差不會太大。於是,開始着手準備了。
因locust在linux環境下運行較穩定,故我選擇安裝 在linux環境中。
第一步:安裝locust pip3 install locust 安裝後locust --version查看當前Locust版本
第二步,編寫腳本
# -*- coding: UTF-8 -*- import requests from locust import HttpLocust,TaskSet,task from requests.packages.urllib3.exceptions import InsecureRequestWarning import base64 # 禁用安全請求警告 requests.packages.urllib3.disable_warnings(InsecureRequestWarning) image_path = '/home/ocrpython/test/2.JPG' image_backpath = '/home/ocrpython/test/4.jpg' def img_to_b64(img_path): with open(img_path, 'rb') as f: base64_data = base64.b64encode(f.read()) return base64_data.decode('utf-8') class set_task (TaskSet): @task(1) def post_api (self): # 定義請求頭 data_dis = {"img": img_to_b64(image_path), "orderNo": "test101901080933541948707600000004"} req = self.client.post("/id_ocr_batch", data=data_dis) http_code = req.status_code if http_code != 200: print("response null !!!") else: print(req.text) @task(1) def post_backapi(self): # 定義請求頭 data_dis1 = {"img": img_to_b64(image_backpath), "orderNo": "back102002200933541948707600000004"} req = self.client.post("/id_ocr_batch", data=data_dis1) http_code = req.status_code if http_code != 200: print("response null !!!") else: print(req.text) class apiUser(HttpLocust): task_set = set_task min_wait = 5 max_wait = 50 host = 'http://XX.XX.XX.XX:5002' if __name__ == '__main__': import os os.system("locust -f /home/ocrpython/locust_idocr.py")
set_taskL類繼承TaskSet類,用於描述用戶行爲:
1、使用@task裝飾的方法爲一個事務,方法的參數用於指定該行爲的執行權重,如上圖,正反面的比例爲1:1.
2、apiUser類用於設定性能測試屬性
3、此腳本只能在裝有locust的環境下運行,不能在pycharm內調試,故只能運行後看代碼是否報錯咯,若無報錯,則性能測試腳本就ok了,則進行下一步
第三步:啓動
進入代碼目錄,輸入 locust -f bokeyuan.py --host=‘’http://XX.XX.XX:5002‘’
第四步:打開locust的web頁面
使用上面的命令行啓動Locust之後,應該打開瀏覽器並將其指向http://XX.XX.XX.XX:8089(XX.XX.XX.XX爲裝有locust的機器地址)
- Number of users to simulate :設置模擬用戶數;
- Hatch rate(users spawned/second) :每秒產生(啓動)的虛擬用戶數;
設置好模擬用戶後,點擊Start swarming開始測試