1. 程式人生 > 其它 >Windows的命令列執行jmeter指令碼(及引數化配置)

Windows的命令列執行jmeter指令碼(及引數化配置)

背景:在準備除錯完測試指令碼後,在命令列執行指令碼

準備工作:切換到jmeter/bin 目錄下(我這裡未配置jmeter的環境變數)、將指令碼檔案test.jmx 存放在bin目錄

執行命令: jmeter -n -t test.jmx -l res.jtl -e -o res/ 

 

-n代表noGUI執行jmeter

-t代表測試計劃(test plan) 

指令碼名稱.jmx,要指明所在目錄,可以使用絕對路徑,也可以使用相對路徑

-l :name不能重複.jtl (.jtl),此檔名不能重複。l就是log的意思,把結果儲存到這個檔案中

-e :在指令碼執行結束後生成html報告

-o :用於存放html報告的目錄(若指定目錄的話,目錄必須為空),支援放

1個未建立的目錄在這裡

1、動態儲存日誌和報告

 

方式一:動態儲存日誌+報告:先刪除之前同名稱已存在的檔案,再執行

 

del /s /Q  01resLogin.jtl

rd /s /Q  02res

jmeter -n -t 01login.jmx   -l 01resLogin.jtl    -e -o 02res

 

 

方式二:加上變數(要先設定變數)

Cmd命名行設定變數:set name=1,再使用它

jmeter -n -t 01login.jmx   -l  res%name%.jtl    -e -o res%name%

---------------------------------------------------------------------------------------------------------

C:\FFFF盤\測試軟體\apache-jmeter-5.4.1\apache-jmeter-5.4.1\bin>set name=2

C:\FFFF盤\測試軟體\apache-jmeter-5.4.1\apache-jmeter-5.4.1\bin>jmeter -n -t 01login.jmx -l res%name%.jtl -e -o res%name

 

 

 

 

2、命令列除錯指令碼,動態配置屬性 例如:執行緒數,持續併發時長等

參照:https://www.cnblogs.com/jxial/p/15169803.html

-J加上指令碼設定的變數名=N,例如執行緒數的變數名

concurrent_number在指令碼中引數化寫法:${__P(count_number,1)} 用到了__P()函式來獲取命令中指定的屬性值,預設值是1在命令列指定10個執行緒數:-Jconcurrent_number=10 (位置放在指令碼檔案後面)

jmeter -n -t 01login.jmx  -Jconcurrent_number=10  -l 01resLogin.jtl    -e -o 02res

若有多個變數,分別指派值,例如:迴圈次數為5  -Jcycles=5

jmeter -n -t 01login.jmx  -Jconcurrent_number=10  -Jcycles=5  -l 01resLogin.jtl    -e -o 02res

  <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="FUSE Pro APP VN" enabled="true">

        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>

        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="迴圈控制器" enabled="true">

          <boolProp name="LoopController.continue_forever">false</boolProp>

          <intProp name="LoopController.loops">-1</intProp>

        </elementProp>

        <stringProp name="ThreadGroup.num_threads">${__P(count_number,1)}</stringProp>

        <stringProp name="ThreadGroup.ramp_time">${__P(ini_time,1)}</stringProp>

        <boolProp name="ThreadGroup.scheduler">true</boolProp>

        <stringProp name="ThreadGroup.duration">${__P(timePeriod,3)}</stringProp>

        <stringProp name="ThreadGroup.delay"></stringProp>

        <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp>

      </ThreadGroup>