Locust 程式碼指令碼實現

yongheng999發表於2024-03-16

需求:用舊版本的locsut去壓測我們的驗證碼和登入的介面。’


定義任務 :傳送http介面請求 ----》類似於Jmeter中的http取樣器

定義任務集:定義一個使用者行為,包含多個http請求 ----》類似於Jmeter中的事務控制器

定義Locust類:Locus類代表使用者,使用者會對應具體的使用者行為 --》類似於Jmeter中的執行緒組

2.3 編寫Locust測試指令碼


1:定義任務

Locust裡傳送請求是基於requests實現的,請求方法,引數,響應對像和requests使用方式一樣

程式碼案例:

```
def mcheckImg(l):
l.client.get("/mcheckImg")
#登入
def mlogin(l):
l.client.post("/mlogin",data={"username":"liulailin","password":"1234"})

#加入購物車
def maddCart(l):
l.client.post("/maddCart",data={"product.pid":"1","count":"1"})
```

2:定義任務集


程式碼案例:

```
class UserCollects(TaskSet):
#各個介面所執行的比例
tasks = {mcheckImg: 1, mlogin: 1,maddCart:1}
def on_start(self):
mlogin(self)
def on_stop(self):
pass
```

定義方式:

• 定義一個使用者行為類,要繼承TaskSet類,表示一個任務集
• tasks:用來新增任務,它是一個dict型別,key表示任務的方法名,value表示挑選執行的權重,數值越大執行頻率越高
• on_start:前置方法(前置任務),在所有任務之前呼叫
• on_stop:後置方法(後置任務),當任務集停止時呼叫

3:定義Locus類


```
class UserLocust(HttpLocust):
task_set = UserCollects
min_wait = 1000 #最少等待時長
max_wait = 1500 #最大等待時長
host = "http://localhost:8080/shop" # 主機名稱的地址
weight = 10 #設定權重
```

定義方式:
• 自定義的Locust類繼承了 `HttpLocust`類,這個類代表使用者
• task_set:該屬性指向 `TaskSet`類,定義使用者的行為
• min_wait:使用者執行任務之間等待時間的下界,預設值:1000ms
• max_wait:使用者執行任務之間等待時間的上界,預設值:1000ms
• host:被測應用的網址,例如:http://bms-test.itheima.net
• weight:使用者被選中的機率,權重越大,被選中的機會就越大。預設
值:10

相關文章