【问题标题】:Problems with the parameterization for the "filename" text of CSV Data set config in jmeterjmeter中CSV数据集配置的“文件名”文本的参数化问题
【发布时间】:2023-04-08 07:13:01
【问题描述】:

我了解 CSV 数据集配置不能使用 JMeter 变量作为“文件名”,因此我使用了不同帖子中建议的 __property 函数:

  • 我在“用户定义的变量”配置元素中定义了一个初始变量(datapoolpath)
  • 然后我在 BeanShell PreProcessor 的属性“pdatapoolpath”中转换了我的“datapoolpath”变量
  • 我在 CSV 数据集配置的文件名字段中使用了 ${__P(pdatapoolpath)}

当我使用 Jmeter GUI 运行 mytest 时,此解决方法运行良好。 一旦我尝试通过 cli (jmeter -n -t mytest,jmx -Jdatapool=c:\datapool) 运行相同的测试,它就不再工作了(即:csv 数据配置无法找到csv 文件,因为属性“pdatapoolpath”的值为空。请注意,在我用来打印属性值的 BeanShell 脚本中,它似乎仍然被正确打印。

所以我的问题是:我哪里错了?为什么从 GUI 和 CLI 运行时 jmeter 的行为会有所不同?

提前致谢

【问题讨论】:

    标签: csv jmeter filenames beanshell


    【解决方案1】:

    如果可以在 UDV 中初始化,您可以在 CSV 数据集配置字段中使用变量。


    假设在名称和路径c:\datapool.csv 中有一个文件,通过使用-J - 您实际上是在将property 传递给JMeter 测试;不可变。

    -J, --jmeterproperty {argument}={value}
                Define additional JMeter properties
    

    如果你这样调用

    jmeter -n -t mytest.jmx -Jdatapool=c:\datapool.csv

    您可以通过在命令行中传递的属性名称直接在 CSV 数据集配置中使用它。

    ${__P(datapool)}
    

    如果您需要将此属性复制到用户定义的变量中,

    vdatapool = ${__P(datapool)}
    

    然后在 CSV 数据集配置中访问下面给出的变量。

    ${vdatapool}
    

    这就是我们需要在 JMeter 中访问变量和属性的方式。

    ${variablename}

    ${__P(proprtyname)}

    【讨论】:

    • 感谢您的澄清,Vinoth,它有很大帮助。我对这个话题还有一个问题。假设我想从我通过 CLI 传递的属性组成“pdatapool”属性,例如: jmeter -n -t mytest.jmx -Jmyworkpath=C:\workdir 然后在 mytext.jmx 中初始化“pdatapool” ' 属性为 ${__P(myworkpath)}\datapool.... 我应该在哪里初始化它以便成功地用作 CSV 数据集配置中的文件名?我在 BeanShell 预处理器中定义但没有成功。提前致谢。
    • 在 Beanshell 中,props.put("pdatapool", props.get("myworkpath") + "\datapool");
    • 谢谢,不过好像不行。即使我可以看到新属性(“pdatapool”)是正确的(我从跟踪中看到),我的 CSV 数据集配置插件仍然从错误的路径读取(插件中的文件名定义如下:${__P (pdatapool)}\my.csv。看起来“pdatapool”属性是在 CSV 插件执行之后初始化的,即使我使用了 BeanShell 预处理器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-06
    • 2016-03-31
    • 1970-01-01
    相关资源
    最近更新 更多