Jmeter JSR223采样器-无法将数据写入CSV文件
我使用的是Jmeter v4.0 r1823414。根据,建议使用JSR223后处理器,逐字:Jmeter JSR223采样器-无法将数据写入CSV文件,csv,jmeter,jsr223,Csv,Jmeter,Jsr223,我使用的是Jmeter v4.0 r1823414。根据,建议使用JSR223后处理器,逐字: 推荐使用Groovy进行任何形式的脚本编写 迁移到JSR223后处理器 在此方法之前,我尝试使用BeanShell采样器将数据简单地写入csv文件。我从页面中获取的代码示例。然而,我得到了一个错误 Sourced file: inline evaluation of: ``import java.io.FileWriter; import java.util.Arrays; import java.i
推荐使用Groovy进行任何形式的脚本编写 迁移到JSR223后处理器
在此方法之前,我尝试使用BeanShell采样器将数据简单地写入csv文件。我从页面中获取的代码示例。然而,我得到了一个错误Sourced file: inline evaluation of: ``import java.io.FileWriter; import java.util.Arrays; import java.io.Writer; impor . . . '' : Typed variable declaration : Attempt to access property on undefined variable or class name
好的,因为有人建议移到JSR223 Sampler(或后处理器,不确定它们在功能上有什么区别),我稍微修改了代码,使之更基于Java,以便在JSR223 Sampler中使用:
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;
import java.io.Writer;
import java.util.List;
public class Main {
//Default separator
private static char SEPARATOR = ',';
//get path of csv file (creates new one if its not exists)
private static String csvFile = "C:/TiredOfProgramming/Work/results.csv"; // for example '/User/Downloads/blabla.csv'
private static String[] params = {"hello", "world", "jmeter"};
//function write line in csv
private static void writeLine(FileWriter writer, String[] parameters, char separator) throws IOException
{
boolean firstParameter = true;
StringBuilder stringBuilder = new StringBuilder();
String parameter = " ";
for (int i = 0; i < parameters.length; i++)
{
//get param
parameter = parameters[i];
log.info(parameter);
//if the first param in the line, separator is not needed
if (!firstParameter)
{
stringBuilder.append(separator);
}
//Add param to line
stringBuilder.append(parameter);
firstParameter = false;
}
//prepare file to next line
stringBuilder.append("\n");
//add to file the line
log.info(stringBuilder.toString());
writer.append(stringBuilder.toString());
}
FileWriter fileWriter = new FileWriter(csvFile, true);
writeLine(fileWriter, params, SEPARATOR);
//proper close to file
fileWriter.flush();
fileWriter.close();
}
导入java.io.FileWriter;
导入java.io.IOException;
导入java.util.array;
导入java.io.Writer;
导入java.util.List;
公共班机{
//默认分隔符
专用静态字符分隔符=',';
//获取csv文件的路径(如果不存在,则创建新文件)
私有静态字符串csvFile=“C:/TiredOfProgramming/Work/results.csv”;//例如“/User/Downloads/blabla.csv”
私有静态字符串[]params={“hello”,“world”,“jmeter”};
//csv中的函数写入行
私有静态void writeLine(FileWriter编写器、字符串[]参数、字符分隔符)引发IOException
{
boolean firstParameter=true;
StringBuilder StringBuilder=新的StringBuilder();
字符串参数=”;
对于(int i=0;i
此特定脚本失败,并显示以下消息:
Script8.groovy:15:意外标记:hello@line 15,第39列。
私有静态字符串[]params={“hello”,“world”,“jmeter”}
如果我在IntellijIDE中测试它,只需将writeLine方法包装到main方法中,一切正常
package com.tiredofprogramming;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;
import java.io.Writer;
import java.util.List;
public class Main {
//Default separator
private static char SEPARATOR = ',';
//get path of csv file (creates new one if its not exists)
private static String csvFile = "C:\\TiredOfProgramming\\Work\\results.csv"; // for example '/User/Downloads/blabla.csv'
private static String[] params = {"hello", "world", "jmeter"};
public static void main(String[] args) throws IOException {
FileWriter fileWriter = new FileWriter(csvFile, true);
writeLine(fileWriter, params, SEPARATOR);
//proper close to file
fileWriter.flush();
fileWriter.close();
}
//function write line in csv
private static void writeLine(FileWriter writer, String[] parameters, char separator) throws IOException
{
boolean firstParameter = true;
StringBuilder stringBuilder = new StringBuilder();
String parameter = " ";
for (int i = 0; i < parameters.length; i++)
{
//get param
parameter = parameters[i];
System.out.println(parameter);
//if the first param in the line, separator is not needed
if (!firstParameter)
{
stringBuilder.append(separator);
}
//Add param to line
stringBuilder.append(parameter);
firstParameter = false;
}
//prepare file to next line
stringBuilder.append("\n");
//add to file the line
System.out.println(stringBuilder.toString());
writer.append(stringBuilder.toString());
}
}
package com.tiredofprogramming;
导入java.io.FileWriter;
导入java.io.IOException;
导入java.util.array;
导入java.io.Writer;
导入java.util.List;
公共班机{
//默认分隔符
专用静态字符分隔符=',';
//获取csv文件的路径(如果不存在,则创建新文件)
私有静态字符串csvFile=“C:\\TiredOfProgramming\\Work\\results.csv”;//例如“/User/Downloads/blabla.csv”
私有静态字符串[]params={“hello”,“world”,“jmeter”};
公共静态void main(字符串[]args)引发IOException{
FileWriter FileWriter=newfilewriter(csvFile,true);
writeLine(文件写入程序、参数、分隔符);
//适当接近文件
fileWriter.flush();
fileWriter.close();
}
//csv中的函数写入行
私有静态void writeLine(FileWriter编写器、字符串[]参数、字符分隔符)引发IOException
{
boolean firstParameter=true;
StringBuilder StringBuilder=新的StringBuilder();
字符串参数=”;
对于(int i=0;i
我的问题是:groovy sampler理解Java吗(在我看到的一篇文章中提到groovy理解99%的Java语法)。有没有人曾经成功地使用Jmeter将数据写入csv文件?尝试一下这个小小的修改:
//Default separator
char SEPARATOR = ',';
//get path of csv file (creates new one if its not exists)
String csvFile = "C:\\TiredOfProgramming\\Work\\results.csv"; // for example '/User/Downloads/blabla.csv'
def params = ["hello", "world", "jmeter"];
//function write line in csv
def writeLine(FileWriter writer, List<String> parameters, char separator) throws IOException {
boolean firstParameter = true;
StringBuilder stringBuilder = new StringBuilder();
String parameter = " ";
for (int i = 0; i < parameters.size(); i++) {
//get param
parameter = parameters[i];
log.info(parameter);
//if the first param in the line, separator is not needed
if (!firstParameter) {
stringBuilder.append(separator);
}
//Add param to line
stringBuilder.append(parameter);
firstParameter = false;
}
//prepare file to next line
stringBuilder.append("\n");
//add to file the line
log.info(stringBuilder.toString());
writer.append(stringBuilder.toString());
}
FileWriter fileWriter = new FileWriter(csvFile, true);
writeLine(fileWriter, params, SEPARATOR);
//proper close to file
fileWriter.flush();
fileWriter.close();
//默认分隔符
字符分隔符=',';
//获取csv文件的路径(如果不存在,则创建新文件)
String csvFile=“C:\\TiredOfProgramming\\Work\\results.csv”;//例如“/User/Downloads/blabla.csv”
def params=[“你好”,“世界”,“jmeter”];
//csv中的函数写入行
def writeLine(文件写入程序、列表参数、字符分隔符)引发IOException{
boolean firstParameter=true;
StringBuilder StringBuilder=新的StringBuilder();
字符串参数=”;
对于(int i=0;i
然而,在Groovy中有更简单的方法来实现这一点