Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
参数化测试数据文件名-Jmeter_Jmeter_Beanshell - Fatal编程技术网

参数化测试数据文件名-Jmeter

参数化测试数据文件名-Jmeter,jmeter,beanshell,Jmeter,Beanshell,我在一个文件夹中有多个测试CSV文件(大约20个文件,每个文件中有一百万条记录(只有一列ID))。我想使用此数据运行性能测试 为了循环浏览这些文件,我取得了一些进展,但有一个问题让我束手无策。首先,我将解释到目前为止我所取得的成就,然后是我遇到的问题 在线程组下添加了BeanShell采样器(脚本如下)。 它以文件路径作为值创建文件变量。 e、 g.file_1=/Users/code/JMeter活动/data/file_1.txt import java.io.*; File fileDir

我在一个文件夹中有多个测试CSV文件(大约20个文件,每个文件中有一百万条记录(只有一列ID))。我想使用此数据运行性能测试

为了循环浏览这些文件,我取得了一些进展,但有一个问题让我束手无策。首先,我将解释到目前为止我所取得的成就,然后是我遇到的问题

  • 在线程组下添加了BeanShell采样器(脚本如下)。 它以文件路径作为值创建文件变量。
    e、 g.
    file_1=/Users/code/JMeter活动/data/file_1.txt
  • import java.io.*;
    File fileDir=新文件(“/Users/Code/JMeter活动/data”);
    File[]fList=fileDir.listFiles();
    int计数器=1;
    for(文件:fList){
    如果(!file.ishiden()){
    put(“file_”+计数器,file.getAbsolutePath());
    log.info(“文件+计数器+”=“+vars.get(“文件+计数器”);
    计数器++;
    }
    }
    
  • ForEach
    控制器添加到循环中。字段和值如下所示 输入变量前缀:文件
    循环的开始索引:0
    输出变量名称:用户_文件
    编号前添加uu-已选中

  • 添加Beanshell预处理器作为
    ForEach
    controller的子级。 在道具中转换变量

    props.put("UserFile", vars.get("USER_FILE")); 
    
  • 将CSV数据集配置添加为
    ForEach
    controller的子项

  • 文件名:${\uu p(UserFile,)}
    纤度计:

    首先,我正在测试一个简单的场景-3个文件(file_1、file_2和file_3),每个文件中有一条记录

    它在所有3个文件中循环(使用log.info、debug sampler、view results tree进行调试),但是数据仅来自最后一个文件。 所以对于文件1,数据来自文件3

    另外,在jmeter.log中,jmeter.services.FileServer始终指向第三个文件


    有没有更好的方法来参数化测试CSV文件?我想用第一个文件和第二个文件中的所有记录运行测试,依此类推。这将阻止服务器端缓存。

    在加载测试树期间填充文件路径,因此无法以这种方式参数化CSV数据集配置。您所能做的就是通过命令行参数定义属性,例如

    jmeter -Jpath=/some/path.csv -n -t ....
    
    并在CSV数据集配置中使用类似于
    ${p(path,)}
    的函数。但是这样你就不能迭代了

    所以我建议考虑在执行过程中评估的函数,因此它可能包含变量


    有关上述和其他JMeter功能的更多详细信息,请参阅用户手册章节和post系列

    嗨,迪米特里,非常感谢你的回复。嗨,迪米特里,你能给我发一份测试计划吗?我已经编辑了你的文章,让它更具可读性。请仔细检查,确保它是有意义的,并进一步编辑它,如果我已经使它不太清楚。