如何在Jmeter的include控制器中设置相对文件路径?

如何在Jmeter的include控制器中设置相对文件路径?,jmeter,jmeter-5.0,jmeter-maven-plugin,Jmeter,Jmeter 5.0,Jmeter Maven Plugin,我试图调用一个由可重用采样器组成的测试片段。我想使用Include控制器在我的另一个脚本中调用测试片段,我想通过在Include控制器中提供相对路径来实现这一点,当设置了测试片段的绝对路径时,它会工作,但如果提供了相对路径,则会给出一个错误 下面是我在用户定义变量中设置的路径:(文件夹结构基于Maven项目) ../../../src/test/resources/testData 下面是我得到的错误: 下面是我在测试片段的用户定义变量配置中设置的路径: 下面是Include控制器的图像,我

我试图调用一个由可重用采样器组成的测试片段。我想使用Include控制器在我的另一个脚本中调用测试片段,我想通过在Include控制器中提供相对路径来实现这一点,当设置了测试片段的绝对路径时,它会工作,但如果提供了相对路径,则会给出一个错误

下面是我在用户定义变量中设置的路径:(文件夹结构基于Maven项目)

../../../src/test/resources/testData

下面是我得到的错误:

下面是我在测试片段的用户定义变量配置中设置的路径:

下面是Include控制器的图像,我试图在其中使用相对/动态路径调用测试片段:

根据文件:

此元素d不支持文件名字段中的变量/函数

但是,如果定义了属性
includecontroller.prefix
,则将使用内容作为路径名的前缀

因此,您有以下解决方法:

  • 考虑使用
  • 或者将“包含的”脚本作为一个单独的进程运行,使用.jtl结果文件可以通过工具与“父”结果文件组合
  • 太长,读不下去了 每个控制器(testFragmentName)->交换机控制器(testFragmentName)->[IncludeController 1(现有路径1),IncludeController 2(现有路径2)]

    简介&我的数据 所以。。。我一直在研究这个问题,不喜欢任何提议的解决方案,因为我想完全控制这个项目

    我的想法是使用json定义套件,如:

    {
        "Suites": [
            {
                "name": "ExampleTest",
                "testFragments": [
                    "Login",
                    "HomePage",
                    "Logout"
                ]
            }
        ]
    }
    
    定义了测试及其模块后,我转到选定的测试计划

    测试计划要素、要点 使用HTTP请求和文件协议获取json文件,其中包含要提取的数据:

    属性/变量输入:套件
    Json路径:
    $.Suites[?([${Suites}]中的@.name])。testFragments.

    现在我准备这样的测试结构:
    | ForEach
    |-开关
    |——包括1
    |——包括2

    ForEach控制器

    开关控制器

    包括控制器
    剩下要做的唯一一件事就是用现有的路径名定义每个Include控制器,这样就不会发生错误。我不建议使用
    includecontroller.prefix
    ,因为它几乎毫无用处

    整个操作需要将交换机控制器内的所有外部jmx测试片段定义为具有正确名称的Include控制器(交换机控制器需要知道选择哪个控制器)

    结论 在我看来,这是值得的,因为您可以使用外部属性(“suites”或其他您想要的属性)来运行预定义的suites

    它并不完美,但它允许通过简单的属性输入实现完全的模块化和外部控制


    PS.Include Controller显然是有史以来最差功能设计的有力竞争者。

    您是否尝试在
    Login TestFragment.jmx
    中删除空间?是的,它与我之前给出的文件名相同,现在我的文件名是正确的驼峰格式,但仍然面临问题。