locust性能測試腳本模板python
#!/usr/bin/env python # -*- coding: utf-8 -*- import time from locust import HttpLocust, TaskSet, task, seq_task class BlogDemo(TaskSet): def get_parameters(self): # 定義獲取參數 pass def regx(self): # 定義正則表達式 pass @seq_task(2) # 第二個執行 @task(1) def open_blog(self): # 定義requests的請求頭和url url = "/111testing" header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"} r = self.client.get(url, headers=header, name="進入個人博客") print(r.status_code) assert r.status_code == 200 @seq_task(1) # 第一個執行 @task(1) # @task(1) 和 @task(2) 運行的請求數量是1:2 def open_blog_firstPage(self): url = "/" header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"} self.client.get(url, headers=header, name="進入博客園首頁") class websitUser(HttpLocust): task_set = BlogDemo # 等待的區域時間不寫的話,默認是1秒 min_wait = 3000 # 單位毫秒 max_wait = 6000 # 單位毫秒 host = "https://www.cnblogs.com" if __name__ == "__main__": import os # 若是上面寫了host,那麼os.system這裏就不用再寫host了 os.system("locust -f demo.py") # 若是上面沒有寫host,那麼os.system這裏就須要寫host # os.system("locust -f demo.py --host=https://www.cnblogs.com") # 本機爲主測試機時運行下面命令,單獨的主測試機運行起來也沒有用(沒法跑併發請求的),必須結合子測試機使用 # os.system("locust -f demo.py --master") # 本機爲子測試機時運行下面命令,運行子測試機的前提是必須已經運行了主測試機 # os.system("locust -f demo.py --slave") # 本機爲子測試機時,且主測試機在另一臺機器時運行下面命令 # os.system("locust -f demo.py --slave --master-host=192.168.xx.xxx") # 通常主測試機多放在windows系統運行,子測試機多放在Linux系統運行,由於windows運行locust性能不好 # 運行一次請求機型調試:locust -f demo.py --no_web -c 1 -n 1
locust集合點設置web
有時測試須要讓全部併發用戶完成初始化後再進行壓力測試,這就須要相似於LoadRunner中的集合點的概念,因爲框架自己沒有直接封裝,可藉助python的gevent庫來實現正則表達式