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

你就可以如界面所顯示的,填入

  • 需要創建的並發數
  • 並發的初始化效率
  • 主機地址

測試即可成功運行。

返回:教程目錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM