1. 程式人生 > >locust 壓測之腳本檢查點

locust 壓測之腳本檢查點

mil tex test col spa png 檢查 kset odin

檢查點簡而言之是用來檢查腳本是否達到事先預想的結果,因為locus判斷請求是否成功只是通過請求響應的狀態碼是否為2002xx來進行,缺乏可靠性。因此,有時請求返回的是200,但是卻並未是測試想要的結果。所以需要使用檢查點來檢查請求返回的數據是否正確,增加腳本的可靠性和說服力。

要獲取到請求返回的數據信息,可以使用正則表達式來獲取頁面中想要的內容,如果是對http接口的壓測,可以直接獲取到接口的返回信息進行檢驗。可根據實際需要選擇哪種方式校驗腳本是否運行成功。

下面以登錄業務的壓測腳本為例:

登錄腳本:login.py
#-*-encoding:utf-8-*-
from locust import HttpLocust,TaskSet,task
import re


def login(l):
	l.head={ #頭部信息
	"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
	"Accept-Encoding":"gzip, deflate, br",
	"Accept-Language":"zh-CN,zh;q=0.9",
	"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
	}
	l.loginparameter={  #參數信息
	"formhash":"1f3a2bb2",
	"referer":"http://localhost:8090/discuz/",
	"loginfield":"username",
	"username":"A12345",
	"password":"123456",
	"questionid":"0",
	"answer":""
	}
	with l.client.post("/logging.php?action=login&loginsubmit=yes&floatlogin=yes&inajax=1",
		headers=l.head,data=l.loginparameter,catch_response=True
) as response: #使用正則表達式獲取返回的數據,進行檢查點判斷 pattern=re.compile(r"\(\‘messageleft\‘\)\.innerHTML = \‘<p>(.+)?</p>") page_content=response.content # print type(page_content) # print page_content reval=pattern.search(page_content) print reval.group() if reval.group()!="(‘messageleft‘).innerHTML = ‘<p>歡迎您回來 新手上路 A12345</p>": response.failure(u"登錄失敗!")
def index(l): l.client.get("/") def profile(l): l.client.get("/index.php") class UserBebavior(TaskSet): tasks ={index:2,profile:1} def on_start(self): login(self) class WebsiteUser(HttpLocust): task_set=UserBebavior min_wait=5000 max_wait=9000 執行腳本:run_test.py #-*-encoding:utf-8-*- import os os.system("locust-script.py -f e:/py/login.py --host=http://localhost:8090/test ")

執行run_test.py結果如下:

技術分享圖片

技術分享圖片

現在將檢查點的判斷條件改為:

技術分享圖片

將檢查點判斷條件改為:獲取到返回的頁面內容為:歡迎您回來...等的信息後,請求運行報錯,

再次運行結果如下:

技術分享圖片

技術分享圖片

locust 壓測之腳本檢查點