Locust 快速開始:一個簡單的登入、頁面瀏覽指令碼【三】
在這節裡面,我們實現的是:
一個使用者登入後,隨機的訪問指定頁面的測試指令碼。
測試用例
在下面的用例中,表示每個模擬的使用者執行任務過程中:
首先:
- 將以 100% 的概率通過login介面執行登入操作;
然後:
- 有25%的概率按照順序訪問/hello頁面和/world頁面
- 有75%的概率訪問/item頁面(這裡會傳一個動態id)
任務 | 目標 | 操作 | 引數 | 條件 |
---|---|---|---|---|
100% | 介面:login | 傳送登入請求 | username,password | |
25% - step 1 | 頁面:/hello | 瀏覽 hello 頁面 | / | |
25% - step 2 | 頁面:/world | 瀏覽 world 頁面 | / | |
75% | 頁面:/item | 瀏覽指定專案id的頁面 | id | 隨機瀏覽id值範圍為1~10000的專案 |
指令碼實現
import random
from locust import HttpUser, task, between
class QuickstartUser(HttpUser):
wait_time = between(5, 9)
@task
def index_page(self):
self.client.get("/hello")
self.client.get("/world")
@task(3)
def view_item(self):
item_id = random.randint(1, 10000)
self.client.get(f"/item?id={item_id}", name="/item")
def on_start(self):
self.client.post("/login", {"username":"foo", "password":"bar"})
指令碼解析
import random
from locust import HttpUser, task, between
匯入 random 用於後續隨機數生成使用
從 locust 匯入 HttpUser 用於提供http操作的方法
從 locust 匯入 task 用於任務的規劃設定
從 locust 匯入 between 用於控制任務之間的延遲停頓
class QuickstartUser(HttpUser):
定義一個所需模擬的使用者類(在這裡,我們需要模擬的是HTTP使用者)所以,繼承了 HttpUser。
HttpUser 為我們所需模擬的使用者類了 HTTP 客戶端屬性,該屬性是 HttpSession 的例項,可以用於向被測試系統發出 HTTP 請求。
wait_time = between(5, 9)
定義了一個等待時間的函式,可以使使用者執行每個任務以後,隨機的等待了5~9秒。
在本節案例腳本里面,分別有:index_page 和 view_item 兩個任務。
@task
def index_page(self):
self.client.get("/hello")
self.client.get("/world")
@task(3)
def view_item(self):
...
在定義的兩個任務 index_page 和 view_item 通過裝飾器控制了他們執行的權重為 1:3。
你可以理解為在每輪迭代的迴圈中:index_page 將有25%的概率被執行,而 view_item 將有 75% 的概率被執行。
而執行 index_page 時,將有兩個頁面訪問請求,分別是 /hello 和 /world
@task(3)
def view_item(self):
item_id = random.randint(1, 10000)
self.client.get(f"/item?id={item_id}", name="/item")
在 view_item 任務中,通過使用1~10000的隨機查詢引數載入動態URL。為了不在 Locust 的統計資訊中獲得 10000 個單獨的條目。
為了把這個動態 URL 的所有響應樣本作為一個整體進行統計,使用 name 引數將所有這些請求分組到名為“ / item”的條目下。
只有定義了 @task 的任務才會被執行。
def on_start(self):
self.client.post("/login", {"username":"foo", "password":"bar"})
在這裡,我們聲明瞭一個 on_start,用於模擬使用者啟動的時候,每個使用者必須執行的初始化操作,在此,它是一個 login 介面請求。
場景執行
把上面的程式碼放在 my_locust_file.py 中,然後執行命令
locust -f my_locust_file.py
這時候訪問,http://127.0.0.1:8089或者http://localhost:8089
你就可以如介面所顯示的,填入
- 需要建立的併發數
- 併發的初始化效率
- 主機地址
測試即可成功執行。