有条件地根据HTTP代码或正文字符串保存对文件的响应

时间:2016-06-15 11:13:44

标签: jmeter

我是一个使用Jmeter并寻找解决方案以解决以下问题的新手:我有一个包含一组原子HTTP请求的套件,目标是将响应主体保存到xml文件中。目前,我正在使用"将响应保存到文件侦听器"来处理它,但需要能够基于响应HTTP代码和正文字符串在不同的XML中单独保存错误和OK响应。

用虚拟代码来说明案例

if (HTTP response code == 200 OK && body does not contain "ERROR") then
     save response to file (%path%\responsename_OK.xml
else
     save response to file (%path%\responsename_ERROR.xml

2 个答案:

答案 0 :(得分:0)

我的坏,尼古拉,我忘了你想用xml格式......

嗯,最简单方式是为每个HTTP请求添加2个简单数据写入器(SDW),其中1个SDW仅记录错误,而其他记录仅成功。

enter image description here

enter image description here

专业人士

  • 很简单,一旦您为1个HTTP请求设置了它,您只需将其复制到每个其他HTTP请求
  • 每个成功或失败都附加到相应的.xml文件
  • 您可以根据需要定义更多或更少的细节

Con是您为每个请求添加2个元素,从而将您的测试大小增加到使用BeanShell断言的两倍。 (如果这是你的担忧。)

如果您想要更详细的方法,可以尝试使用XML Parsers和XPath Assertions编写的BeanShell Assertion,如概述here

答案 1 :(得分:0)

  1. 使用Response Assertion(事实上,您需要2:一个用于响应代码,另一个用于响应正文检查),以便根据这些条件使请求失败
  2. 使用If Controller设置条件:

      如果以前的采样器成功,
    • ${JMeterThread.last_sample_ok}将被触发
    • !${JMeterThread.last_sample_ok} - 如果之前的采样器失败将触发

      N.B。你应该在If Controller下有任何Sampler,这样才能正常工作。