2014-01-17 37 views
0

我想在JMeter中執行以下Beanshell腳本,並在日誌中引發錯誤。該腳本是:用於在線程之間共享cookie的JMeter Beanshell腳本引發錯誤

import org.apache.jmeter.protocol.http.control.CookieManager; 
import org.apache.jmeter.protocol.http.control.Cookie; 
CookieManager manager = sampler.getCookieManager(); 
Cookie cookie = new Cookie("ApiSession",props.get("MyCookie"),"","/",false,0); 
manager.add(cookie); 

在日誌文件中的錯誤是:

jmeter.util.BeanShellInterpreter:錯誤調用BSH方法:EVAL源文件:``進口org.apache.jmeter:內嵌評價.protocol.http.control.CookieManager;導入org.apache。 。 。 。 ''

它不滿意的行:manager.add(cookie);

如果我將它評論出來,那麼腳本運行,但顯然不會做我想要的。所以,不知道問題是什麼。

無法看到整個調試信息是沒有用的。 Jmeter日誌只記錄實際錯誤消息的一部分(如上所述),並且該消息在中間被切斷。打開調試模式不起作用。

+0

我不明白'sampler.getCookieManager()'是如何工作的。在BeanShell採樣器中,該變量不是定義的可訪問變量之一。您必須將'sampler'定義爲這樣的變量,才能正常工作:'HTTPSampler sampler = ctx.getCurrentSampler()'。 – djangofan

+0

@djangofan,當我這樣做時,我得到關於丟失HTTPSampler的錯誤: *類型變量聲明:類:HTTPSampler在命名空間中找不到* –

+0

嗯,這篇文章很久以前。不知道Jmeter 3.1+中的東西是否相同。 – djangofan

回答

1

如果你想看到完整的錯誤信息,你需要在try/catch塊中包含有問題的語句,並將堆棧跟蹤打印到sdtout/log。

在線程組之間特別共享cookies使用案例在How to use BeanShell指南中突出顯示。

+0

感謝您對try/catch的建議。將嘗試一下。通過共享cookie示例,我也會嘗試它。看起來他們從HTTP Cookie管理器中定義了CookieManager,與我做過的方式略有不同。將讓知道如果這已經奏效。 – DOgl

+0

如果您沒有啓用HTTP Cookie管理器,那麼我不會驚訝地發現您有錯誤。順便說一下,如果您在jmeter.properties或命令行中將CookieManager.save.cookies = true'屬性設置爲'jmeter -JCookieManager.save.cookies = true',那麼您將能夠訪問Cookie作爲通用JMeter變量 –

+0

是,這工作!添加HTTP Cookie管理器到測試計劃修復它。我認爲,因爲我在BeanShell腳本中導入了類定義,足以使其工作,但顯然不是。非常感謝。 – DOgl