我正在使用jMeter来测试Tomcat应用程序。我需要解析jMeter响应并发出第二个请求。第一个回答如下:
<responseData class="java.lang.String"><html>
<body>
ERROR=0
MSG=N/A
FILELIST=1555;1340778737370;1526545487;
VERSION=1.002
URL=https://192.168.100.46/updserver/download?action=signature_download&token=
INTERVAL=0
</body>
</html>
</responseData>
我需要提取“FILELIST”和“URL”变量并将它们注入新的URL:
https://192.168.100.46/updserver/download?action=signature_download&token=1555;1340778737370;1526545487;
我知道有一些后处理器可以做到这一点,但不知道如何做到这一点。顺便说一下,第二个请求会从Tomcat servlet下载一些文件,有没有办法让jMeter只下载流但不写入物理文件?这样我就可以对我的servlet进行负载性能测试。
答案 0 :(得分:21)
好的,所以你已经知道如何从你的回复中提取网址了,我在之前的回答中描述了如何:
https://stackoverflow.com/a/11188349/169277
但在这里,我将扩展它。所以你有你的采样器,你已经得到了$ {url}
。现在您需要FILELIST
并组装新网址。
假设您已经有请求和网址提取器。添加新的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个正则表达式提取器。您需要添加额外的后处理器才能组合新的URL。
Right click on request sampler -> Post Processors -> BSF PostProcessor
从beanshell
下的语言下拉列表中选择Script language
,然后在大字段Script:
中粘贴以下内容:
vars.put("NEW_URL", "${__javaScript('${url}'.replace('
'\,'${FILELIST}'))}");
现在你有${NEW_URL}
可以在测试中进一步使用。
总有不止一种解决问题的方法,这一条线条看起来很丑陋,但却符合目的。
在我的测试中,结果是您所请求的(Debug Sampler):
url=https://192.168.100.46/updserver/download?action=signature_download&token=
FILELIST=1555;1340778737370;1526545487;
NEW_URL=https://192.168.100.46/updserver/download?action=signature_download&token=1555;1340778737370;1526545487;
编辑:
我想我不明白你如何命名你的变量。但最终的结果是你在问题中描述的那个。请参阅附带工作示例的.jmx测试:
http://www.filefactory.com/file/1q7nfitmh4qd/n/so_11309469_jmx
这是一个jmeter .jmx文件,使用2.6+版本的jmeter
答案 1 :(得分:7)
要capture部分回复,请使用Regular Expression Extractor。
您可以使用ViewResultsTree侦听器在响应数据上测试正则表达式。只需在ViewResultsTree监听器左侧面板底部的下拉框中选择Regexp tester。