Locust 腳本開發入門(4)


腳本開發入門

本節主要介紹 Locust 執行參數化的方法,參數化的目的無非就是以下幾種:

  • 模擬用戶在不同場景下的傳參差異化,比方說所有並發對同一個訂單執行支付,也許你需要檢驗這樣是否能發現到一些別的異常,但這是不符合性能測試需求的
  • 滿足業務對用戶傳參的約束條件,比方說你如果壓測的是即時通訊的消息收發,即便支持多終端在線,但大量並發登錄一個賬號也是是不符合實際的
  • 滿足系統對用戶傳參的約束條件

對一個參數執行參數化,首先得分清楚這個參數是屬於 “基礎數據” 還是 “業務數據” ,譬如 性別、省份、年月日,這些可以歸納為基礎數據,而對於與被測試系統業務有一定關聯性的,你可以歸為業務數據,例如 賬號密碼、userId、orderId。

通常來說,基礎數據 的數據范圍是相對數量固定的、內容有限的,即便切換測試環境也不影響的,所以一般在腳本中內實現隨機抽取,例如:

import random

sex = random.choice(['男性', '女性'])
year = random.randint(1949,2020)

而業務數據動輒幾百上千條,相對來說數量和內容都是可變的,則應該通過讀取外部文件實現(注意:Locust 的負載是通過 單進程 + 多協程 的實現,並非 多進程 + 多線程)。

范例:從 CSV 中讀取參數實現參數化

下面看一段腳本范例,實現了登錄賬號、密碼的參數化:

首先創建一個 csv 文件,第一列是登錄賬號,第二列是賬號對應的密碼,采用“,”分隔:

13800000001,abcd12ty
13800000002,abrd123y
13800000003,a12d1rty
13800000004,abc43454
13800000005,abcd12we
13800000006,abcd1wer
13800000007,abceqwe4
13800000008,abcd123k
13800000009,abcd1sd2
13800000010,123d124v

保存為:username.csv

然后,腳本實現:


from locust import HttpUser, task, constant, SequentialTaskSet
import queue

class taskcase(SequentialTaskSet):

    @task
    def pft(self):
        user = self.user.user_list.get()
        # print("username:{},password:{}".format(user["username"],user["password"]))
        
        self.client.post(
            "/login", {"username": user["username"], "password": user["password"]})
            
        # 登錄后的一系列操作
        
        self.user.user_list.put_nowait(user)

class ApiUser(HttpUser):

    host = "http://www.demo.com"
    wait_time = constant(0)
    tasks = [taskcase]
    
    user_list = queue.Queue()
    
    with open("./username.csv") as file:
        for line in file:
            userInfo = line.split(',')
            data = {
                "username": userInfo[0],
                "password": userInfo[1]
            }
            
            user_list.put_nowait(data)

實現效果

創建了10個用戶,user1~user10,依次取出測試賬號 13800000001 ~ 13800000010,執行登錄

Locust 腳本開發入門(1)
Locust 腳本開發入門(2)
Locust 腳本開發入門(3)
Locust 腳本開發入門(4)
返回:教程目錄
本節教程涉腳本


免責聲明!

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



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