【问题标题】:how to write data to csv in jmeter using beanshell scripting如何使用beanshell脚本在jmeter中将数据写入csv
【发布时间】:2016-06-23 08:22:05
【问题描述】:

我是 jmeter 的新手,在我的公司中,我们正在使用 jmeter 进行 web 服务测试。我的要求是我使用 csv 数据配置文件进行 web 服务测试,在这里我想用测试结果更新 csv 文件的每一行和我正在使用 beanshell 后处理器,请帮助

例如: csv 包含:

Test Case,Dates,Numbers,Results
Total test cases are 16 and i want to update as below for each test case
TC_001,9-03-2016,001,PASS
TC_002,9-03-2016,0002,FAIL

还有一个……

Result = "FAIL";
Response = prev.Get....();
If(Response.Contains("Valid"));
Results="PASS";
f = new FileOutputStream("/tmp/oders.csv", true);
p = new PrintStream(f); 
this.interpreter.setOut(p); 
print(Results + "," + Result);
f.close();
P.Close();

【问题讨论】:

    标签: performance web-services csv jmeter beanshell


    【解决方案1】:

    import java.io.File;
    import org.apache.jmeter.services.FileServer;  //jmeter spelling corrected
    import java.io.FileWriter;
    import java.io.PrintWriter;
    import java.util.Arrays;
    import java.io.Writer;
    
    File file = new File("csvFilePath");
    FileWriter fstream = new FileWriter(file, true);
    // true, will append the file if already exist
    
    BufferedWriter out = new BufferedWriter(fstream);
    out.write("Save your data which you want to save");
    out.write("Save your data which you want to save");
    
    out.close();
    fstream.close();
    

    【讨论】:

      【解决方案2】:

      这可能不是最好的主意:

      • 您可能无法重新使用此文件
      • 您可能会遇到 2 个或更多线程同时写入文件的情况,这会导致数据丢失、文件损坏或 IO 异常

      我建议您将“Test Case”、“Dates”和“Numbers”变量添加到 JMeter 的 .jtl 结果文件中,而不是使用 Sample Variables 属性,例如:

      1. 假设您有 3 个变量:TestCaseDateNumber
      2. 将以下行添加到 user.properties 文件(它位于 JMeter 安装的 /bin 文件夹下)

        sample_variables=TestCase,Date,Number
        
      3. 在下次 JMeter 重新启动时,您将看到附加到 .jtl 结果文件的“TestCase”、“Date”和“Number”变量值。

      也可以将设置作为命令行参数传递,例如:

      jmeter -Jsample_variables=TestCase,Date,Number -n -t /path/to/testplan.jmx -l /path/to/results.jtl 
      

      参考资料:

      【讨论】:

      • 嗨,谢谢你的回复,但如果我直接在 user.properties 中声明,那么它对这种情况很有用,但如果我想做另一个soap请求,那么每次每个网络的参数都会改变在 user.properties 中添加服务意味着我该怎么做?
      【解决方案3】:

      我想分享我使用 BeanShell PostProcessor 将变量写入文件的经验。

      我使用“正则表达式提取器”从服务器捕获了一些响应并将其保存到几个变量 Var1 和 Var2 中,当我使用“BeanShell PostProcessor”将这些变量写入文件时,我观察到它在我们运行时工作正常单线程测试,多线程测试,数据丢失。

      假设当我注入 100 个事务时,我只能在输出文件中看到 97 条记录。

      因此,最好的选择是在 user.properties 文件中设置 sample_variables,以便您可以在 .jtl 结果文件中获取变量。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-14
        • 1970-01-01
        • 2017-05-17
        • 1970-01-01
        • 2017-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多