在JMeter中使用简单数据编写器的变量和/或属性

在JMeter中使用简单数据编写器的变量和/或属性,jmeter,Jmeter,使用JMeterV5.1.1,我将设置一个动态文件路径和名称,以便与简单的数据编写器一起使用。我想尽一切办法都试过了,但没有用。我尝试过的事情: JSR223预处理器(作用域为同一线程组),它在变量中存储动态路径/名称,并在简单数据编写器中使用变量 连续执行线程组。在属性中存储动态路径/名称的JSR223采样器中使用启动线程,并在Simple Data Writer中使用\u P函数检索路径/名称。如果我在测试结束时不删除属性,此方法将从上一次运行中提取属性值 连续执行线程组。将启动线程与JS

使用JMeterV5.1.1,我将设置一个动态文件路径和名称,以便与简单的数据编写器一起使用。我想尽一切办法都试过了,但没有用。我尝试过的事情:

  • JSR223预处理器(作用域为同一线程组),它在变量中存储动态路径/名称,并在简单数据编写器中使用变量
  • 连续执行线程组。在属性中存储动态路径/名称的JSR223采样器中使用启动线程,并在Simple Data Writer中使用
    \u P
    函数检索路径/名称。如果我在测试结束时不删除属性,此方法将从上一次运行中提取属性值
  • 连续执行线程组。将启动线程与JSR223采样器一起使用,该采样器在属性中存储动态路径/名称。运行JSR223预处理器,它将全局属性存储为线程组中的变量,并使用Simple Data Writer中的变量检索路径/名称。我也用这种方法尝试了
    \uv
    函数。如果我在测试结束时不删除属性,此方法将从上一次运行中提取属性值
我可以在JSR223脚本中看到,正在使用
log.info
正确设置路径/名称。我还可以在使用调试采样器时看到它们的设置,但由于某些原因,简单的数据编写器似乎没有将它们提取出来。如果我在运行之前设置了变量,它就可以正常工作。这似乎是一个操作顺序问题,或异步/多线程问题,但我不确定如何继续。任何指导都将不胜感激

下面是一个复制该行为的示例:


假的
真的
真的
持续
假的
1.
1.
1.
假的
棒极了
真的
导入org.apache.jmeter.services.FileServer;
//获取当前操作系统的分隔符
字符串分隔符=File.separator;
//使用{current directory}}/csv作为路径
字符串路径=FileServer.getFileServer().getBaseDir()+分隔符+“csv”+分隔符;
//如果没有创建目录'不存在
(新文件(路径)).mkdirs();
log.info(路径);
//将路径保存到属性
放置(“数据文件路径”,路径);
棒极了
真的
导入org.apache.jmeter.services.FileServer;
导入java.time.*;
导入java.time.format.*;
//获取格式为yyyyMMddHHmm的当前日期/时间
String formattedDateTime=LocalDateTime.now().format(DateTimeFormatter.ofPattern(“yMMddHHmm”);
//获取当前正在运行的脚本的名称
字符串scriptName=FileServer.getFileServer().getScriptName();
//将文件名另存为scriptName(减去文件扩展名),末尾带有时间戳
字符串文件名=scriptName.take(scriptName.lastIndexOf('')+“?”+formattedDateTime+“.csv”;
log.info(文件名);
//将文件名设置为属性
put(“数据文件名”,文件名);
持续
假的
1.
2.
1.
假的
真的
真的
真的
真的
假的
假的
保存配置
真的
真的
真的
真的
真的
true
真的 真的 真的 假的 假的 真的 假的 假的 假的 真的 假的 假的 假的 真的 0 真的 真的 真的 真的 真的 真的 ${{uuu P(数据文件路径)}${{uu P(数据文件名)} jsonplaceholder.typicode.com https /待办事项/1 得到 真的 假的 真的 假的 “组名”:[“${uuuup(组名${{uuuuu随机(1,${uuuuuu属性(组名{umatchnr})})}”] 持续 假的 1. 1. 1. 假的 棒极了 真的 移除(“数据文件路径”); props.remove(“数据文件名”); 假的 保存配置 真的 真的 真的 真的 真的
true
真的 真的 真的 假的 真的 真的 假的 假的 假的 真的 假的 假的 假的 真的 0 真的 真的 真的 真的 真的 真的
您可以使用逐步调试程序调试此问题。如果可以的话,您还可以使用内置的JMeter函数来完成您的需求。因为内置的JMeter函数在侦听器路径中运行良好。

您可以使用逐步调试程序调试此问题。如果可以的话,您还可以使用内置的JMeter函数来完成您的需求。因为内置的JMeter函数在侦听器路径中工作得很好。

我认为您不能在的文件名字段中使用,事实上您可以,但它将返回默认值
1
,因此当您运行名为
11
的测试文件时,将在您运行的文件夹中生成
jmeter -n -t test.jmx -l csv/%date:~10,4%%date:~4,2%%date:~7,2%%time:~0,2%%time:~3,2%.csv
jmeter -n -t test.jmx -l csv/`date +%Y%m%d%H%M`.csv