2012-07-03 47 views
24

我正在使用jMeter来测试Tomcat应用程序。我需要解析jMeter响应并发出第二个请求。第一反应是这样的:如何解析Jmeter响应并发出新请求

<responseData class="java.lang.String">&lt;html&gt;&#xd; 
&lt;body&gt;&#xd; 
ERROR=0&#xd; 
MSG=N/A&#xd; 
FILELIST=1555;1340778737370;1526545487;&#xd; 
VERSION=1.002&#xd; 
URL=https://192.168.100.46/updserver/download?action=signature_download&amp;token=&#xd; 
INTERVAL=0&#xd; 
&lt;/body&gt;&#xd; 
&lt;/html&gt;&#xd; 
</responseData> 

我需要提取“FILELIST”和“URL”的变量,并将其注入到一个新的URL:

https://192.168.100.46/updserver/download?action=signature_download&amp;token=1555;1340778737370;1526545487;&#xd; 

我知道有一些后处理器要做到这一点,但不知道如何去做。顺便说一句,第二个请求将从Tomcat servlet下载一些文件,有没有办法让jMeter下载流,但不写入物理文件?所以我可以对我的servlet进行负载性能测试。

回答

20

好了,所以你已经知道如何提取网址你的反应,我介绍了如何在我以前的答案是:

https://stackoverflow.com/a/11188349/169277

但在这里我就扩大这一点。所以你有你的取样器,你已经得到$ {url}。现在您需要FILELIST并组装新的网址。

假设你已经有请求和URL提取器。添加一个新的Regular expression extractor

Right click on request sampler -> Post Processors -> Regular Expression Extractor

Reference Name : FILELIST 
Regular Expression : FILELIST=(\S+) 
Template : $1$ 
Match No. (0 for Random): 1 

所以,现在你有1个请求采样器和2次正则表达式提取。您需要添加额外的后处理器才能组装新的网址。

Right click on request sampler -> Post Processors -> BSF PostProcessor

选择从语言droplist的beanshellScript language并在大田里Script:粘贴此:

vars.put("NEW_URL", "${__javaScript('${url}'.replace('&#xd;'\,'${FILELIST}'))}"); 

现在你有${NEW_URL}在您的测试中继续使用。

总有不止一种解决问题的方法,这一个班轮看起来真的很丑,但它的目的。

在我的测试结果是按照您的要求(调试采样):

url=https://192.168.100.46/updserver/download?action=signature_download&amp;token=&#xd; 
FILELIST=1555;1340778737370;1526545487;&#xd; 
NEW_URL=https://192.168.100.46/updserver/download?action=signature_download&amp;token=1555;1340778737370;1526545487;&#xd; 

编辑:

我想我不明白你如何命名变量。但最终结果是你在你的问题中描述的结果。请看。附有工作示例JMX测试:

http://www.filefactory.com/file/1q7nfitmh4qd/n/so_11309469_jmx

这是.jmx文件有2.6+版本的JMeter

+0

@蚂蚁的一个工作JMeter的,根据你的帮助,目前我有SAMPLE1(其中有3个后处理器:url/token extrator/bsf后处理器),sample2发送新的请求。但仍然有一些错误,即sample2没有得到正确的URL,请帮助找到我的Debug Sampler:[链接] http://pastebin.com/rXB00uTL –

+0

@Grace请看看更新后的答案 – ant

+0

@ ant,i对不起,我犯了一个可怕的错误。现在它在我身边工作,我无法向你表示感谢,感谢你的大力帮助。 –

7

capture响应的一部分使用Regular Expression Extractor

您可以使用ViewResultsTree侦听器在响应数据上测试您的regex表达式。只需在ViewResultsTree侦听器左侧面板底部的下拉框中选择Regexp tester。

相关问题