2014-01-17 2 views
0

JMeter에서 다음 Beanshell 스크립트를 실행하려고하는데 로그에 오류가 발생합니다. 스크립트는 다음과 같습니다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 방법 : 평가 전래 파일 :``수입 org.apache.jmeter : 인라인 평가 .protocol.http.control.CookieManager; org.apache를 가져 오십시오. . . . ''

줄에 만족스럽지 않습니다. manager.add (쿠키);

내가 주석을 달면 스크립트가 실행되지만 분명히 내가 원하는 것을하지 않습니다. 따라서 문제가 무엇인지 확실하지 않습니다.

전체 디버그 정보를 볼 수없는 경우 유용하지 않습니다. Jmeter 로그는 실제 오류 메시지 (위와 같음)의 일부만 기록하고 그 메시지는 중간에 잘립니다. 디버깅 모드로 전환해도 도움이되지 않습니다.

+0

'sampler.getCookieManager()'가 어떻게 작동하는지 보지 못했습니다. BeanShell 샘플러에서이 변수는 정의 된 접근성 변수 중 하나가 아닙니다. 'sampler'를 다음과 같이 변수로 정의해야합니다 :'HTTPSampler sampler = ctx.getCurrentSampler()'. – djangofan

+0

@ djangofan, 내가 이것을 할 때 누락 된 HTTPSampler에 대한 오류가 발생합니다. * 유형이 지정된 변수 선언 : 클래스 : HTTPSampler가 네임 스페이스에 없습니다. * –

+0

글쎄,이 게시물은 오래 전에 작성되었습니다. Jmeter 3.1 이상에서 상황이 같은지 확실하지 않습니다. – djangofan

답변

1

전체 오류 메시지를 보려면 try/catch 블록에서 문제가있는 명령문을 둘러싸고 stacktrace를 sdtout/log에 인쇄해야합니다.

특히 스레드 그룹간에 쿠키를 공유하는 경우 How to use BeanShell 가이드에 강조 표시되어 있습니다.

+0

try/catch 팁을 주셔서 감사합니다. 그것을 시도 할 것이다. 공유 쿠키 예제를 통해 나는 그것을 시도 할 것이다. 그들은 HTTP 쿠키 관리자에서 CookieManager를 정의하는 것으로 보이는데, 이는 내가 한 방식과 약간 다릅니다. 그게 효과가 있었는지 알려줄 것입니다. – DOgl

+0

HTTP 쿠키 관리자가 활성화되어 있지 않은 경우 오류가 있음을 알면 놀라지 않을 것입니다. 그런데 jmeter.properties 나 명령 줄에서'CookieManager.save.cookies = true' 속성을'jmeter -JCookieManager.save.cookies = true'로 설정하면 일반 JMeter 변수로 쿠키에 액세스 할 수 있습니다 –

+0

예 , 그 일했다! HTTP 쿠키 관리자를 테스트 계획에 추가하면 해결되었습니다. BeanShell 스크립트에서 클래스 정의를 가져오고 있기 때문에 충분히 효과적 일 것이라고 생각했지만 분명히 아닙니다. 고마워. – DOgl

관련 문제