【问题标题】:Jmeter include controller relative pathJmeter包括控制器相对路径
【发布时间】:2023-03-26 12:35:01
【问题描述】:

我们正在使用 Jmeter-maven-plugin 并在 eclipse 中创建了一个 maven 项目。我的测试文件(MainTest.jmx)在 src/test/jmeter 文件夹中,在这个测试中,我们使用“包含控制器”来重用测试片段。这些片段存储在 src/test/jmeter/fragments 中。我们尝试在包含控制器中遵循相对路径

  1. ../fragments/FragmentA.jmx

  2. src/test/jmeter/fragments/FragmentA.jmx

  3. 在 pom.xml 中尝试了 propertiesUser 选项

<propertiesUser>
                <fragments.directory>src/test/jmeter/fragments</fragments.directory>
</propertiesUser>

包括控制器未能加载 .jmx 文件。获得关注

错误 o.a.j.c.IncludeController:包含控制器“包含控制器” 无法加载 '${__P(fragments.directory)}/fragmentA.jmx' - 查看日志 详情。

java.io.IOException: loadIncludedElements - 失败: E:\Luna\ADXJmeter\target\jmeter\bin\${__P(fragments.directory)}\FragmentA.jmx 和 E:\Luna\ADXJmeter\target\jmeter\testFiles\${__P(fragments.directory)}\片段A.jmx

完整的日志

> 2017-05-24 12:14:39,442 INFO o.a.j.c.IncludeController: loadIncludedElements -- try to load included module: E:\Luna\ADXJmeter\target\jmeter\bin\FragmentA.jmx
> 2017-05-24 12:14:39,442 INFO o.a.j.c.IncludeController: loadIncludedElements -failed for: E:\Luna\ADXJmeter\target\jmeter\bin\FragmentA.jmx
> 2017-05-24 12:14:39,442 INFO o.a.j.c.IncludeController: loadIncludedElements -Attempting to read it from: E:\Luna\ADXJmeter\target\jmeter\testFiles\FragmentA.jmx
> 2017-05-24 12:14:39,442 ERROR o.a.j.c.IncludeController: Include Controller 'Include Controller' can't load 'FragmentA.jmx' - see log for details
> 2017-05-24 12:14:39,443 ERROR o.a.j.u.JMeterUtils: Including file "FragmentA.jmx" failed for Include Controller "Include Controller", unexpected error - see log for details
> 2017-05-24 12:14:39,443 WARN o.a.j.c.IncludeController: Including file "FragmentA.jmx" failed for Include Controller "Include Controller", unexpected error
> java.io.IOException: loadIncludedElements -failed for: E:\Luna\ADXJmeter\target\jmeter\bin\FragmentA.jmx and E:\Luna\ADXJmeter\target\jmeter\testFiles\FragmentA.jmx
>	at org.apache.jmeter.control.IncludeController.loadIncludedElements(IncludeController.java:139) [ApacheJMeter_components-3.2.jar:3.2 r1790748]
>	at org.apache.jmeter.control.IncludeController.resolveReplacementSubTree(IncludeController.java:111) [ApacheJMeter_components-3.2.jar:3.2 r1790748]
>	at org.apache.jmeter.JMeter.runNonGui(JMeter.java:936) [ApacheJMeter_core-3.2.jar:3.2 r1790748]
>	at org.apache.jmeter.JMeter.startNonGui(JMeter.java:910) [ApacheJMeter_core-3.2.jar:3.2 r1790748]
>	at org.apache.jmeter.JMeter.start(JMeter.java:538) [ApacheJMeter_core-3.2.jar:3.2 r1790748]
>	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_121]
>	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_121]
>	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_121]
>	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_121]

【问题讨论】:

    标签: jmeter performance-testing load-testing jmeter-plugins jmeter-maven-plugin


    【解决方案1】:

    在尝试以这种方式使用包含控制器之前,您是否阅读过documentation

    此元素不支持文件名字段中的变量/函数。 但是,如果定义了属性 includecontroller.prefix,则内容会被用作路径名的前缀。

    同一章节提供了线索:您拥有includecontroller.prefix 属性,JMeter 将尝试在includecontroller.prefix + Filename 的路径下查找文件

    所以你应该修改你的配置如下:

    <propertiesUser>                
        <includecontroller.prefix>src/test/jmeter/fragments</includecontroller.prefix>
    </propertiesUser>
    

    并且在包含控制器中只使用FragmentA.jmx

    查看How to Manage Large JMeter Scripts With JMeter Test Fragments 了解有关使用模块化 JMeter 测试的更多信息。

    【讨论】:

    • 仍在尝试在 target/jmeter/bin 文件夹中查找文件 > 2017-05-24 12:14:39,442 信息 oajcIncludeController: loadIncludedElements -- 尝试加载包含的模块:E:\Luna\ ADXJmeter\target\jmeter\bin\FragmentA.jmx > 2017-05-24 12:14:39,442 信息 oajcIncludeController: loadIncludedElements - 失败:E:\Luna\ADXJmeter\target\jmeter\bin\FragmentA.jmx > 2017- 05-24 12:14:39,442 错误 oajcIncludeController:包含控制器“包含控制器”无法加载“FragmentA.jmx”-有关详细信息,请参阅日志
    • 在 pom.xml 中添加以下 ${basedir}/target/jmeter/testFiles/fragments/ 后它工作了
    • 我有二进制文件,所以我在 jmeter.properties 文件中添加了所需的路径,但它不起作用。在日志中,我看到包含控制器每次都指向 bin 文件夹。因此,我没有让它变得复杂,而是在文件名中添加了“..\scripts\call.jmx”路径,因为我的“call.jmx”脚本文件位于“jmeter3.3\scripts\call.jmx”下,而脚本文件夹是bin 文件夹的兄弟,因此移出脚本文件夹中输入的 bin 文件夹使其工作。可能对某人有用。
    • windows 用户的快速提示,不要忘记加双反斜杠 例如:D:\\mypath\\myjmeter\\ 还要记得添加尾随反斜杠!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-17
    • 2018-08-28
    • 1970-01-01
    • 2015-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多