当前位置: 首页 > 知识库问答 >
问题:

Jmeter Beanshell后处理器未将任何内容写入csv文件

蔚琦
2023-03-14

我有这样的简单代码-

import java.io.FileOutputStream;

import java.io.BufferedWriter;

import java.io.FileWriter;
num1 = vars.get("num");

log.info("num1");


 FileWriter fstream = new FileWriter("C:\abc\\r.csv", true);
 BufferedWriter out = new BufferedWriter(fstream);
 out.write(vars.get("num"));
 out.write(System.getProperty("line.separator"));
 out.close();
 fstream.close();

但是,它不起作用,没有东西进入csv文件。我可以看到用log语句打印在日志文件中的数字。也没有错误。

共有2个答案

庞元青
2023-03-14

试试这个:

import java.io.FileOutputStream;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException; //import IOException, you'll need it later
import java.io.File; // this too :)

int num1 = vars.get("num"); // you need to declare variable type, int in your case, othrewise it's an error
log.info(String.valueOf(num1)); //use String.valueOf() to convert int to String before logging

try {
    // you need to escape '\', or better use linux-style paths
    File myCsv = new File("C:/abc/r.csv");

    FileWriter fstream = new FileWriter(myCsv, true);
    BufferedWriter out = new BufferedWriter(fstream);
    out.write(num1);
    out.write(System.getProperty("line.separator"));
    out.close();
    fstream.close();
} catch (IOException exc) {
    // in case any error occurs, catch it and log
    log.error("Failed to write to file!\r\n" + exc.getMessage());
}

不确定,如果您需要添加所有这些导入,理论上jmeter应该会自动获得它们,但我现在没有任何需要检查的意义。
更新:
确保您的r.csv所在的目录存在,并且您有在那里编写的权限。

冀啸
2023-03-14

>

  • 确保num1变量不为空,以便检查它,请修改打印它的行:

    log.info(num1);
    

    您需要删除num1周围的引号以查看实际值

    您需要用双反斜杠转义“abc”文件夹名称:

    FileWriter fstream = new FileWriter("C:\\abc\\r.csv", true);
    

    也许使用FileUtils类会更容易,比如:

    import org.apache.commons.io.FileUtils;
    FileUtils.writeStringToFile(new File("C:\\abc\\r.csv), vars.get("num"), true);
    FileUtils.writeStringToFile(new File("C:\\abc\\r.csv"), System.getProperty("line.separator"), true);
    

    通过在Beanshell脚本的开头添加debug();指令,可以将大量Beanshell调试打印到STDOUT中。还要考虑使用Debug Sampler和View Results Tree listener组合来检查JMeter变量和属性值。有关更多详细信息,请参阅如何调试Apache JMeter脚本文章。

  •  类似资料:
    • 我有一个Python脚本,它运行查询并将输出打印到文本文件。当我Dockerize它时,不会创建输出文件。Dockerfile如下: <代码>证书。txt是我需要添加输出的文件。这在脚本中引用。如何将其添加到Dockerfile?

    • 问题内容: 我想将变量(这里称为)的内容复制到文件中。 文件名存储在另一个变量中。 我在执行此操作时遇到问题。这是我尝试过的: 我还用dd命令尝试了相同的操作…显然,shell认为这是指目录,因此告诉我找不到该目录。 我该如何解决? 问题答案: 使用命令: 代表文件的测试。 截断文件后,追加文本。如果只想将文本附加到文件的现有内容中,请改用: 该命令用于复制文件(到文件),而不用于将文本写入文件。

    • 我使用supercsv CsvBeanWriter将值写入csv文件。 示例类: 我得到的结果是: 注意

    • 问题内容: 将结构转储到提供的csv文件中的惯用golang方法是什么?我在一个func里面,我的结构作为接口{}传递: 为什么要使用界面{}?-从JSON读取数据,可能会返回一些不同的结构,因此尝试编写足够通用的函数。 我的类型的一个例子: 问题答案: 如果您使用具体类型,将会容易得多。您可能想要使用该软件包,这是一个相关示例;https://golang.org/pkg/encoding/cs

    • 我正在docker容器中运行Apache2,不想向磁盘写入任何内容,只想向stdout和stderr写入日志。我见过几种不同的方法(Supervisord和stdout/stderr,Apache访问stdout日志),但这些方法看起来像是黑客。难道就没有办法默认这样做吗? 需要说明的是,我不想对日志进行跟踪,因为这将导致将内容写入容器中的磁盘。 签入Docker Hub(https://Hub.

    • 问题内容: 我认为我应该完成一项我似乎无法解决的非常简单的任务。 如何将Python字典写入csv文件?我想要的只是将字典键写入文件的第一行,并将键值写入第二行。 我最接近的是以下内容(我是从别人的帖子中获得的): 问题是,上面的代码似乎只将密钥写入第一行,仅此而已。我没有将值写入第二行。 有任何想法吗? 问题答案: 您使用的是期望字典列表而不是字典的列表。您只想DictWriter.writer