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匯入的方式):列表方法:csv匯入方法(csv檔案必須要放在gatling資料夾下的 \user-files\resources 中):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檔案test的內容(最終post操作效果和上面的列表完全一樣):val csvnamefeeder =
csv(
"test.csv"
).random //csv的檔名
))
每乙個使用者群裡的操作都是按編寫順序執行的,若想測試同時執行的動作,可以通過定義多個使用者群來實現:)// 通過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平台也支援,這正是我需要的,用了一上午的時間熟悉...