2017-01-03 82 views
0

我以JSON格式获取HTTP响应。使用JSON提取器我能够提取确切的值,但我无法将它们存储在CSV文件中。如何使用beanshell jmeter在csv文件中提取结果?

JSON响应

{ 
    "success": true, 
    "vulns":  [ 
       { 
      "TYPE": "vuln", 
      "ID": "82003", 
      "FQDN": "", 
      "PORT": "", 
      "Table": "67696056" 
     }, 
       { 
      "TYPE": "vuln", 
      "ID": "90067", 
      "FQDN": "", 
      "PORT": "", 
      "Table": "67696057" 
     }, 
       { 
      "TYPE": "vuln", 
      "ID": "70000", 
      "FQDN": "", 
      "PORT": "", 
      "Table": "67696058" 
     }, 
       { 
      "TYPE": "vuln", 
      "ID": "70032", 
      "FQDN": "", 
      "PORT": "", 
      "Table": "67696059" 
     }, 
       { 
      "TYPE": "vuln", 
      "ID": "90042", 
      "FQDN": "", 
      "PORT": "", 
      "Table": "67696060" 
     } 
    ] 
} 

在这里,我要存储在.csv文件在将来使用他们所有的ID。 我用下面的代码在beanshell postprocessor

import java.io.FileWriter; 

String str=vars.get("ID"); 

FileWriter writer = new FileWriter("C:\\Softwares\\Installed\\jmeter-3.0\\bin\\ID.csv"); 

writer.write(str); 

writer.close(); 

据书面方式文件,但所有的ID都写在一行像

["82003","90067","70000","70032","90042"] 

但我需要他们像

82003 
90067 
70000 
70032 
90042 

调试后处理器响应数据

ID=["82003","90067","70000","70032","90042"] 

可以请一些请提供我的解决方案或BeanShell代码相同?

感谢, 维杰

+0

的每次运行中的同一个文件中,请添加您用于检索“ID”的模式/正则表达式。 –

回答

0

我相信你可以一举两得使用JSR223 PostProcessor中和Groovy语言,而不是JSON提取和BeanShell的一块石头。

  1. 添加JSR223 PostProcessor作为产生JSON输出
  2. 将下面的代码放到PostProcessor中的“脚本”区域的请求的小孩:

    import groovy.json.JsonSlurper 
    import org.apache.commons.io.FileUtils 
    
    def response = prev.getResponseDataAsString() 
    
    JsonSlurper slurper = new JsonSlurper() 
    def json = slurper.parseText(response) 
    
    def ID = json.vulns.ID 
    
    ID.each { FileUtils.writeStringToFile(new File("C:\\Softwares\\Installed\\jmeter-3.0\\bin\\ID.csv"), it + System.getProperty("line.separator"), true) } 
    

你应该得到生成的文件以你想要的格式。

参考文献:

0

试试这个,它为我工作

ID = vars.get( “ID”);

FileWriter writer = new FileWriter("C:\\Softwares\\Installed\\jmeter-3.0\\bin\\ID.csv",true); // true to append 

BufferedWriter out = new BufferedWriter(writer); 
out.write(ID); 
out.write(System.getProperty("line.separator")); 
out.close(); 

writer.close(); 
0

如果您使用JSON提取器提取准确值,则可以使用以下代码将新变量写入新行。

try { 
     extractedId=vars.get("extracted_Id"); 
     f= new FileOutputStream("D:/YourCSVFile.csv", **true**); 
     p = new PrintStream(f); 
     this.interpreter.setOut(p); 
     print(extractedId); 
     f.close(); 
    } 

    catch (Throwable ex) { 
    log.error("Error in Beanshell", ex); 
    throw ex; 
    } 

在FileOutputStream中功能使用“假”,如果你想创建的每个设置新的新鲜结果。将'true'添加到您测试计划

相关问题