亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Jmeter 中創建隨機列表名稱并在不同線程中使用 - Jmeter

如何在 Jmeter 中創建隨機列表名稱并在不同線程中使用 - Jmeter

蠱毒傳說 2021-12-01 14:49:33
我有一個關于 Jmeter 全局變量的問題。我想在第一個線程中創建一個列表,并在所有線程中使用該列表。由于它是全局的,我希望每次運行測試計劃時,字符串名稱都會獲得新值。我創建了一個生成唯一名稱的函數,但是當我嘗試在第二個線程中調用它時,它不知道變量的名稱。測試計劃首先 Jssr 預處理創建隨機名稱以用作變量。我放置值的采樣器,并保存全局變量 t_${offer_list_rand},它將指向列表嘗試在不同的線程中調用列表指針 t_${offer_list_rand} 并嘗試向列表添加值控制臺異常Problem in JSR223 script JSR223 Sampler, message: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: offer_list_rand for class: Script30javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: offer_list_rand for class: Script30    at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:324) ~[groovy-all-2.4.15.jar:2.4.15]    at org.codehaus.groovy.jsr223.GroovyCompiledScript.eval(GroovyCompiledScript.java:72) ~[groovy-all-2.4.15.jar:2.4.15]    at javax.script.CompiledScript.eval(CompiledScript.java:92) ~[?:1.8.0_65]    at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:221) ~[ApacheJMeter_core.jar:5.0 r1840935]    at org.apache.jmeter.protocol.java.sampler.JSR223Sampler.sample(JSR223Sampler.java:71) [ApacheJMeter_java.jar:5.0 r1840935]    at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:622) [ApacheJMeter_core.jar:5.0 r1840935]    at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:546) [ApacheJMeter_core.jar:5.0 r1840935]    at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:486) [ApacheJMeter_core.jar:5.0 r1840935]    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:253) [ApacheJMeter_core.jar:5.0 r1840935]    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_65]如您所見,創建的 offer_list_rand 變量我只想創建一個名稱列表,每次運行測試計劃時都會隨機分配該名稱,并從不同的線程調用它。有人可以建議嗎?
查看完整描述

3 回答

?
吃雞游戲

TA貢獻1829條經驗 獲得超7個贊

根據JMeter 的最佳實踐,使用vars.getinside script 而不是${}

 props.put("t_" + vars.get("offer_list_rand"),offer_list);


查看完整回答
反對 回復 2021-12-01
?
慕容708150

TA貢獻1831條經驗 獲得超4個贊

你在做一些奇怪的事情

  1. 您的 Groovy 腳本將無法工作,因為您不能將offer_list_rand變量引用為${offer_list_rand},請考慮在 Groovy 腳本中使用Parameters任何JMeter 函數和/或變量引用的部分

  2. 您的方法將不起作用,因為第二個線程組${offer_list_rand}變量值一無所知,因為 JMeter 變量是線程組的本地變量。從技術上講,您可以將 JMeter 屬性命名為 JMeter 變量,例如:

    vars.put('offer_list_rand', 'foo')
    props.put('offer_list_rand', 'bar')

    并且您將擁有具有不同值的不同對象,該變量將foo在定義它的線程組中可見,并且該屬性將對bar整個 JVM 可見,直到您關閉或重新啟動 JMeter。

  3. 使用 JMeter 內置測試元素(或插件)而不是編寫腳本總是更快/更容易/更好,特別是在您的情況下,您可以輕松使用__setProperty()函數或線程間通信插件,甚至移動您的邏輯從 setUp 線程組進入普通線程組,并使用只有一次控制器如果控制器使其僅運行一次


查看完整回答
反對 回復 2021-12-01
?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

重新檢查后,這是解決方案。在我放置的 Jssr 預處理器中


String list_rand = list_obj.get_random_list_name("temp_");

props.put('list_rand',list_rand);

在我放的處理器中


List<String> list2 = new ArrayList<String>();


props.put('list_rand_'+ props.get('list_rand'),list2);

當我想在其他線程組中調用它時,我使用了


List<String> myList = props.get('list_rand'+ props.get('list_rand'));



myList.add("333");


查看完整回答
反對 回復 2021-12-01
  • 3 回答
  • 0 關注
  • 224 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號