初步研究gatling指令碼(3)

2021-10-01 17:54:13 字數 4562 閱讀 7990

gatling通過scenariobuilder類來配置使用者類執行動作細節:

通過呼叫scenario方法來生成並返回乙個scenariobuilder類物件,每呼叫一次scenari方法,在gatling相當於定義了乙個新的使用者群

val scn =

scenario

("blog request"

)// 括號內為定義的場景名字

通過呼叫scenariobuilder類裡的exec方法去配置訪問http的操作:

// 這裡在之前宣告了val httpprotocol = http.baseurl("http://localhost:4311")

// 所以這裡相當於訪問 http://localhost:4311/login

可以多次呼叫exec方法實現乙個場景的多步操作):

注意:執行順序是由編寫順序決定的,如下面**是先執行完get("/login")的操作後才執行get("/")最後到get("/edit")

))

上面所定義的 「get login」, "get index"和 "get edit"會在gatling執行時標註在每步執行的細節中:

(這裡存在乙個重定向是因為自己寫的**有這步操作所以出現了 redirect 操作,可忽略)

以上的寫法只會執行一次,若想重複執行一次操作多次,則需要計數/計時器:

計數/計時器在程式中的使用:

注意:當使用了during或者repeat方法時,必須將exec用大括號括在其中,且exec不能寫成.exec

val scn =

scenario

("blog request").

during(10

).pause(2

)// 暫停執行兩秒 用於模擬等待時間

)

post請求的方式(get請求沒什麼好說的就不展開了):

)//.formparam("name","node") 這裡是直接請求表單

//.formparam("password","password")

// 下面是通過body去請求表單 效果等同於上面兩句

.body

(stringbody(""

)).asjson

引數化操作(gatling有多種引數化方式,這裡只研究了列表和csv匯入的方式):

列表方法:

val mapnamefeeder =

array

(map

("name"

->

"node_1"),

map(

"name"

->

"node_2"),

map(

"name"

->

"node_3"))

.random // random 隨機取值 如果想按循序迴圈用 circular

// 要用feed宣告要讀取的陣列 否則$會找不到值 而且要在執行的exec前宣告

)// 動態引數name的寫法 "$" 要帶雙引號

.formparam

("password"

,1234

))

csv匯入方法(csv檔案必須要放在gatling資料夾下的 \user-files\resources 中):

val csvnamefeeder =

csv(

"test.csv"

).random //csv的檔名

))

csv檔案test的內容(最終post操作效果和上面的列表完全一樣):

每乙個使用者群裡的操作都是按編寫順序執行的,若想測試同時執行的動作,可以通過定義多個使用者群來實現:

)// 通過inject來設定注入使用者

// 定義需要啟動的使用者群,同時配置scn1,scn2,則兩個使用者群都會同時進行操作

}// 包裝寫部落格的操作

object edit "))

.asjson)

}// 執行順序還是 按順序執行完login裡的操作 再按順序執行edit裡的操作

)}後續待補充……

指令碼引擎初步研究

2006年09月28日 15 12 00 由於組態軟體裡要嵌入指令碼引擎,以前雖然在ioserver中嵌入了vbscript,但指令碼引擎的概念實在是不甚明白,這幾天集中突擊了指令碼引擎的相關知識,收穫還不少。尤為重要的是,python指令碼引擎進入了我的視野,因為它支援多個平台,連wince平台也...

指令碼引擎初步研究

由於組態軟體裡要嵌入指令碼引擎,以前雖然在ioserver中嵌入了vbscript,但指令碼引擎的概念實在是不甚明白,這幾天集中突擊了指令碼引擎的相關知識,收穫還不少。尤為重要的是,python指令碼引擎進入了我的視野,因為它支援多個平台,連wince平台也支援,這正是我需要的,用了一上午的時間熟悉...

指令碼引擎初步研究

由於組態軟體裡要嵌入指令碼引擎,以前雖然在ioserver中嵌入了vbscript,但指令碼引擎的概念實在是不甚明白,這幾天集中突擊了指令碼引擎的相關知識,收穫還不少。尤為重要的是,python指令碼引擎進入了我的視野,因為它支援多個平台,連wince平台也支援,這正是我需要的,用了一上午的時間熟悉...