【问题标题】:How to extract response data JSON and save variable to CSV file in Jmeter如何在 Jmeter 中提取响应数据 JSON 并将变量保存到 CSV 文件
【发布时间】:2018-08-04 18:07:31
【问题描述】:

我正在尝试从响应数据中提取键“计数”并将其值 (int) 写入 CSV 文件。

我也使用过 BeanShell PostProcessor。

下面是我用过的脚本:

count = vars.get("count");

f = new FileOutputStream("file path", true);
p = new PrintStream(f); 
this.interpreter.setOut(p); 
print(count);
f.close();

还有 JSON 样本,我正在尝试提取:

{"meta":{"message":"","is_error":false,"count":295,"next":"123","status":1000,"previous":""}

这样做,“null”会打印在 CSV 文件中。

请让我们知道我在这里缺少什么?

应该是 295 打印在 CSV 文件中。

【问题讨论】:

    标签: jmeter


    【解决方案1】:

    检查您的提取器是否获取了正确的值。下面,我使用了相同的代码并使用正则表达式提取器从 json 中获取值。它工作正常。

    希望对你有帮助。

    Reg Ex 更新

    正则表达式配置;-

    下面是测试正则表达式。您始终可以使用 RegEx Tester 在视图结果树中测试您的正则表达式:-

    【讨论】:

    • 谢谢阳光。您是否使用过 Regex extracor 来提取计数值?如果您能附上 Regex extracor 的快照,我将不胜感激。
    • @Palash Jain..检查它是否有帮助。但是,虽然我已经给出了答案,但我个人还是选择了 Dmitri T 的答案。
    • 感谢 Sunny,它成功了。我还有一个疑问。有什么方法可以在针对其线程的同一测试结果 csv 文件中使用非 gui 模式时写入该“计数”值?
    • 是的,您可以使用 jmeter 变量。检查链接 gerardnico.com/jmeter/output_file 中的 4.6 部分。如果它帮助您可以接受答案,请参阅 stackoverflow.com/help/someone-answers
    【解决方案2】:

    Since JMeter 3.1 users are strongly advised to switch to JSR223 Test Elements and Groovy language 主要是因为Groovy has much better performance comparing to Beanshell

    所以我建议使用JSR223 PostProcessor 以提取“计数”值并将其写入“单次”文件中,相关代码将类似于:

    new File('file path') << new groovy.json.JsonSlurper().parse(prev.getResponseData()).meta.count
    

    更多细节:

    【讨论】:

    • 我认为它应该是 prev.getResponseDataAsString() 而不是 prev.getResponseData() 作为你的代码@Dmitri T
    • 我认为它应该保持原样,prev stands for a SampleResult 或派生类实例,它具有getResponseData() 函数,该函数返回响应主体的字节数组表示。将其转换为字符串将导致 JMeter 和 JsonPath 双方的双重工作,在性能方面最好使用字节数组
    • 很高兴知道这一点,这是我在下一个测试计划中学到的教训。谢谢@Dmitri T
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2022-01-16
    • 2016-03-31
    • 1970-01-01
    相关资源
    最近更新 更多