【问题标题】:JMeter does not replace ${SUBPANEL_RELATE_MODULE_g1} with its valueJMeter 不会将 ${SUBPANEL_RELATE_MODULE_g1} 替换为其值
【发布时间】:2011-06-29 21:17:33
【问题描述】:

说来话长,但我会尽量简化:

  1. 我用SugarMMM 生成了MeterMaid XML 文件;我只选择了 Accounts 模块:

  2. 我使用 MeterMaid 将上述文件转换为 JMeter 格式(我将测试合并为一个文件并将其命名为“filename.xml”):

     ruby GenMeter.rb --inputfile=filename.xml --outputfile=filename.jmx
    
  3. 我进行了必要的 CSV 设置。 CSV 文件包含的所有内容都是用于测试并发用户登录的登录详细信息 (usr,pwd)。这部分确实很好用。

当我运行测试时,我可以看到一大堆${} 变量被转换成对应的值。遗憾的是,${SUBPANEL_RELATE_MODULE_g1} 没有得到解决...这是 GET url(来自 View Results Tree 侦听器组件)的样子:

http://localhost/sugarcrm/index.php?module=${SUBPANEL_RELATE_MODULE_g1}&action=Popup&hide_clear_button=true&mode=MultiSelect&create=true&metadata=undefined

请注意,它不是唯一未解析的变量。下面的截图显示了其他失败的测试,都是由其他变量没有被对应的值替换引起的:

以下是该变量的设置方式(远在使用它之前):

Debug Sampler 是这样说的:

JMeterVariables:
CAMPAIGN_ID=CAMPAIGN_ID_ERROR
CAMPAIGN_NAME=CAMPAIGN_NAME_ERROR
CONTACT_ID=997a3171-aa60-b2d6-a457-4e0ba8b0052b
CONTACT_ID_g=4
CONTACT_ID_g0=onclick="send_back('Contacts','997a3171-aa60-b2d6-a457-4e0ba8b0052b');">Prof
CONTACT_ID_g1=onclick="send_back('Contacts','
CONTACT_ID_g2=997a3171-aa60-b2d6-a457-4e0ba8b0052b
CONTACT_ID_g3=');">
CONTACT_ID_g4=Prof
CONTACT_NAME=Prof
CONTACT_NAME_g=4
CONTACT_NAME_g0=onclick="send_back('Contacts','997a3171-aa60-b2d6-a457-4e0ba8b0052b');">Prof
CONTACT_NAME_g1=onclick="send_back('Contacts','
CONTACT_NAME_g2=997a3171-aa60-b2d6-a457-4e0ba8b0052b
CONTACT_NAME_g3=');">
CONTACT_NAME_g4=Prof
FOUND_ID=1
JMeterThread.last_sample_ok=true
JMeterThread.pack=org.apache.jmeter.threads.SamplePackage@3c1635
MEMBER_OF_ID=d7c26344-cad8-0503-b02a-4e0cb4db3985
MEMBER_OF_ID_g=4
MEMBER_OF_ID_g0=onclick="send_back('Accounts','d7c26344-cad8-0503-b02a-4e0cb4db3985');">searchSearchForm
MEMBER_OF_ID_g1=onclick="send_back('Accounts','
MEMBER_OF_ID_g2=d7c26344-cad8-0503-b02a-4e0cb4db3985
MEMBER_OF_ID_g3=');">
MEMBER_OF_ID_g4=searchSearchForm
MEMBER_OF_NAME=searchSearchForm
MEMBER_OF_NAME_g=4
MEMBER_OF_NAME_g0=onclick="send_back('Accounts','d7c26344-cad8-0503-b02a-4e0cb4db3985');">searchSearchForm
MEMBER_OF_NAME_g1=onclick="send_back('Accounts','
MEMBER_OF_NAME_g2=d7c26344-cad8-0503-b02a-4e0cb4db3985
MEMBER_OF_NAME_g3=');">
MEMBER_OF_NAME_g4=searchSearchForm
OPPORTUNITY_ID=864e402f-0d76-ab6e-b54f-4e0cb42f0249
OPPORTUNITY_ID_g=4
OPPORTUNITY_ID_g0=onclick="send_back('Opportunities','864e402f-0d76-ab6e-b54f-4e0cb42f0249');">value
OPPORTUNITY_ID_g1=onclick="send_back('Opportunities','
OPPORTUNITY_ID_g2=864e402f-0d76-ab6e-b54f-4e0cb42f0249
OPPORTUNITY_ID_g3=');">
OPPORTUNITY_ID_g4=value
OPPORTUNITY_NAME=value
OPPORTUNITY_NAME_g=4
OPPORTUNITY_NAME_g0=onclick="send_back('Opportunities','864e402f-0d76-ab6e-b54f-4e0cb42f0249');">value
OPPORTUNITY_NAME_g1=onclick="send_back('Opportunities','
OPPORTUNITY_NAME_g2=864e402f-0d76-ab6e-b54f-4e0cb42f0249
OPPORTUNITY_NAME_g3=');">
OPPORTUNITY_NAME_g4=value
RANDOM_CHAR=o
RANDOM_CHAR_g=1
RANDOM_CHAR_g0=o
RANDOM_CHAR_g1=o
RANDOM_STRING=value
RANDOM_STRING_g=1
RANDOM_STRING_g0=value
RANDOM_STRING_g1=value
RECORD_NAME=NOT_FOUND
RECORD_NUMBER=3250317d-6c79-b20d-5e36-4e0cb4746e84
RECORD_NUMBER_g=2
RECORD_NUMBER_g0=javascript:lvg_nav('Accounts', '3250317d-6c79-b20d-5e36-4e0cb4746e84
RECORD_NUMBER_g1=javascript:lvg_nav('Accounts', '
RECORD_NUMBER_g2=3250317d-6c79-b20d-5e36-4e0cb4746e84
SEARCH_FIELD=SEARCH_FIELD_ERROR
START.HMS=190308
START.MS=1309453388621
START.YMD=20110630
SUBPANEL_RELATE_MODULE=Accounts
TEAM_ID=seed-Teams8
TEAM_ID_g=4
TEAM_ID_g0=onclick="send_team_to_form('Teams','seed-Teams8');">Ball
TEAM_ID_g1=onclick="send_team_to_form('Teams','
TEAM_ID_g2=seed-Teams8
TEAM_ID_g3=');">
TEAM_ID_g4=Ball
TEAM_NAME=Ball
TEAM_NAME_g=4
TEAM_NAME_g0=onclick="send_team_to_form('Teams','seed-Teams8');">Ball
TEAM_NAME_g1=onclick="send_team_to_form('Teams','
TEAM_NAME_g2=seed-Teams8
TEAM_NAME_g3=');">
TEAM_NAME_g4=Ball
TESTSTART.MS=1309455500088
pwd=user1
usr=user1

更新

模板更改为$1$$2$$3$$4$后如下:

这里是调试输出(采样器放在正则表达式控制器之后):

JMeterVariables:
JMeterThread.last_sample_ok=true
JMeterThread.pack=org.apache.jmeter.threads.SamplePackage@18fde89
RANDOM_CHAR=t
RANDOM_CHAR_g=1
RANDOM_CHAR_g0=t
RANDOM_CHAR_g1=t
RANDOM_STRING=Tanzania
RANDOM_STRING_g=1
RANDOM_STRING_g0=Tanzania
RANDOM_STRING_g1=Tanzania
RECORD_NAME=NOT_FOUND
RECORD_NUMBER=DOCTYPE
RECORD_NUMBER_g=1
RECORD_NUMBER_g0=DOCTYPE
RECORD_NUMBER_g1=DOCTYPE
START.HMS=100932
START.MS=1312531772599
START.YMD=20110805
SUBPANEL_RELATE_MODULE=Accounts
TESTSTART.MS=1312542237235
pwd=user1
usr=user1

【问题讨论】:

    标签: jmeter


    【解决方案1】:

    在您的 CSV 数据集配置中验证,所有变量均已正确声明(无拼写错误、无遗漏、变量名称前无空格等)

    我还建议将debug sampler 放在树的高处,因为它会显示每个变量及其值,并且可以节省大量时间。

    编辑:

    看起来您的正则表达式设置不正确,无法创建多个组。如果您查看调试采样器,您有 SUBPANEL_RELATE_MODULE=Accounts 但没有 SUBPANEL_RELATE_MODULE_g1= 。这意味着您没有设置 GROUPS。

    在查看您的正则表达式时,template: $0$ 行说“只给我一个组”,而看起来您想要 4 个。因此,您应该尝试 template: $1$$2$$3$$4$ 第一个匹配项应该是 _g1 第二个匹配项_g2 等等。查看manual for details.

    【讨论】:

    • 更改模板后我仍然遇到同样的问题。
    • 你有匹配号码吗?设置为 -1 ? (负一)
    • 你是说那是我必须使用的吗?如果我这样做,我会遇到同样的问题。
    • 啊抱歉 - 忘记了您想要实现的目标。 -1 是接收与 ForEach 控制器一起使用的所有匹配项。您可以发布更新的正则表达式和调试输出以查看您所做的更改吗?在当前的正则表达式控制器中,您的变量名看起来像有空格而不是下划线。
    • 我想知道下划线的事情是怎么发生的。可能是屏幕截图而不是实际数据的问题。我已经更新了问题...请看一下。
    【解决方案2】:

    在 ${SUBPANEL_RELATE_MODULE_g1} 变量被正则表达式提取器定义后,在整个脚本中明智地使用它。验证它是否存在。在控制器标题、测试标题、测试开始和测试结束时使用它。

    这将有助于缩小范围

    通过这种方式,您可以在脚本中跟踪它,以确保它在使用它之前就存在,并找到它发生故障的地方。基本上是打印语句调试。

    【讨论】:

    • 如何将它放在控制器标题或其他地方?
    • 将变量添加到控制器的名称部分
    【解决方案3】:

    我不了解 Sugar CRM 或 Metermaid,但对于 jmeter,我遇到了类似的变量问题,但无法解决。

    检查此变量是否在某处声明,或者您可能需要编写一个正则表达式来从先前的请求中提取该值。

    我遇到的问题是我从 CSV 文件中提取了变量

    变量名是CONTRACTNO, CLIENTNO

    我的网址:/SomeURL/bla?eventId=contractSelected&contractNoSelected=${CONTRACTNO}&applicationID=BLa

    它不起作用,所以我将 csv 文件中的变量名更改为:

    CONTRACTNO,CLIENTNO(看我删除了一个空格)

    Jmeter 往往对名称和变量定义中的空格非常挑剔。

    【讨论】:

    • 我放在 CSV 文件中的唯一变量是用户名和密码,它们工作正常(我有多个用户登录)。在正则表达式元素中可以找到其他变量,包括 SUBPANEL_RELATE_MODULE。
    • 据我所知,URL 中的变量似乎在默认的 SUBPANEL_RELATE_MODULE 上,尝试在 jakarta oro 运行您的 reg ex(一个 jmeter 使用)jakarta.apache.org/oro/demo.html 可能有什么你的解析有问题,因为你没有得到任何价值。
    【解决方案4】:

    您期望以下值

    ${SUBPANEL_RELATE_MODULE_g1}
    

    但您已将正则表达式提取器引用名称配置为

    "SUBPANEL_RELATE_MODULE"
    

    有两个选项可以获取值

    1. 您必须将${SUBPANEL_RELATE_MODULE_g1} 更改为${SUBPANEL_RELATE_MODULE}
    2. 您必须将正则表达式提取器引用名称从"SUBPANEL_RELATE_MODULE _g1" 更改为"SUBPANEL_RELATE_MODULE"

    在此之后,您的值将被正确替换。

    【讨论】:

      【解决方案5】:

      您的正则表达式似乎没有匹配,您的默认值设置为“帐户”,并且在您的调试输出中是变量的值。如果正则表达式匹配,您只会获得匹配组。

      查看结果树侦听器现在有一个 RegExp 测试器,因此您可以转到您尝试从结果树的结果中提取变量 SUBPANEL_RELATE_MODULE 的请求,然后从显示“文本”的下拉列表中选择 RegExp 测试器”。

      然后您可以在 RegExp 测试器中对响应数据运行您的正则表达式,并可能发现它不匹配,然后磨练您的正则表达式,使其匹配并在您的正则表达式提取器中更新它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-08
        • 2021-08-29
        • 1970-01-01
        • 2015-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-04
        相关资源
        最近更新 更多