簡體   English   中英

JMeter-從命令行調用時正在運行預處理器?

[英]JMeter - Running preprocessor when called from command line?

我是JMeter的新手。

我的團隊擁有我們通常通過GUI運行的現有JMeter測試計划。 我正在嘗試從命令行運行它。

在我們的測試計划中,我們有一堆在TestPlan級別聲明的變量。 這些變量包含用於設置不同環境(例如,test,prod,dev)的信息。 直接在TestPlan之下的是JSR223 PreProcessor,它基本上采用變量來顯示您要在哪個環境中運行,並將主機名,端口等設置為該環境的值。

當我使用GUI運行測試時,它可以在所選環境下完美運行。 但是,當我使用以下命令在命令行中運行它時:

jmeter -n -t testName.jmx -l Results.csv

它會嘗試在默認環境下運行,並且不會將其更改為我想要的環境。 我嘗試添加-Jenv=dev ,但這似乎沒有任何區別。

從命令行調用預處理器時是否不運行? 可能還有其他我想念的東西嗎? 鑒於我在這里的經驗不足,我什至不十分確定如何分辨問題所在。

非常感謝!

很難斷定jmeter腳本中的確切問題是什么。 查看問題陳述,我可以感覺到您需要找到從命令行傳遞變量並在腳本中對其進行處理的正確方法。

從命令行傳遞變量並在jmeter中對其進行處理的示例如下所示:

  1. 在jmeter中聲明一個帶有值的變量作為屬性。 您可以在這里使用任何東西,我已經使用了用戶定義的變量。 變量env is declared as ${__P(env)}

在此處輸入圖片說明

  1. 使用JSR處理該變量。 這里只是打印從參數傳遞的值到jmeter日志中。 現在,可以使用${env}變量重用該值[請注意,它是一個變量而不是屬性,因為我們在用戶定義的變量中聲明了這種方式]。

String valuePassed = vars.get("env"); log.info("Parameter passed from command line: " + valuePassed);

在此處輸入圖片說明

  1. 使用以下命令從命令行運行:

    jmeter -n -t <>.jmx -Jenv=Prod -j sample.log

  2. 結果顯示在日志文件中

在此處輸入圖片說明

預處理程序僅與采樣器一起執行

如果線程組中沒有任何Sampler,則不會執行任何PreProcessor。

還應注意,預處理器遵循JMeter 范圍規則以進行以下操作:

  • 如果您添加了PreProcessor作為Sampler的子級-PreProcessor將在給定Sampler之前執行
  • 如果您在同一級別上有兩個采樣器和一個預處理器-預處理器將在每個采樣器之前執行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM