JMeter:使用 CSV 数据将参数传递给 HTTP GET 请求查询字符串

Cin*_*ndy 3 csv get jmeter httprequest load-testing

我对 JMeter 相当陌生,正在创建负载测试。我在 HTTP 采样器中有一个 GET 请求,如下所示:

/myCalendar?c={calendarName}&l={location}&i={calendarId}&loc={locationId}&s={calendarEvent}&a={eventId}&t={epochTime}
Run Code Online (Sandbox Code Playgroud)

大括号中显示的名称是我的参数名称。这些参数中的每一个都有自己的 .csv 文件,因此也有自己的 CSV 数据集配置元素。这些参数中的每一个还链接到 HTTP 采样器的“随请求发送参数”字段中各自的 CSV 文件。

我的测试失败了,但我可以通过单击结果树中的失败测试指示器来判断所有参数都从我的 .csv 文件中返回了正确的值。但是,我注意到如果我仅将某些值硬编码到查询字符串中,则在某些情况下测试将通过。

例如,这失败了......

/myCalendar?c=calendarName&l=location&i=calendarId&loc=locationId&s=calendarEvent&a=eventId&t=epochTime
Run Code Online (Sandbox Code Playgroud)

...但这通过了:

/myCalendar?c=calendarName&l=BMJErIH4Mku4HwdHyuX2XA&i=84Rza73ERUmRGb99NWZytw&loc=locationId&s=calendarEvent&a=odH1gBRnH0moh5YN4tgczw&t=157963549
Run Code Online (Sandbox Code Playgroud)

如果我通过将硬编码的 epochTime 替换为指向 .csv 文件的参数来修改传递的请求,则会出现以下错误:

服务器在处理请求时遇到错误。异常消息是“值不能为空。参数名称:edate

如果我将 epochTime 恢复为其硬编码值并将其他三个硬编码值替换为其关联参数,则会出现以下错误:

服务器在处理请求时遇到错误。异常消息是“base64 转换为 GUID 错误

我意识到这可能是一个完全不同的问题,但是这些值在硬编码到查询字符串中时确实起作用,所以我不明白为什么如果从 .csv 文件中提取它们就不起作用。

最后,值得注意的是,我确实有使用以下语法的单参数测试用例,其中“生日”是用户定义的变量,如下所示。我发现在具有多个变量的查询字符串中使用此语法会在第一个 '{' 字符处引发异常。

myCalendar/${Birthday} 
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激!

Cin*_*ndy 6

我的测试失败的原因仅仅是因为我在 HTTP Request Sampler 的 Path 字段中输入了错误的信息。

最初,我的路径是这样的,

/myCalendar?c=calendarName&l=location&i=calendarId&loc=locationId&s=calendarEvent&a=eventId&t=epochTime
Run Code Online (Sandbox Code Playgroud)

并且“使用请求发送参数”字段中的参数名称/值对是:

  • 日历名称,${日历名称}
  • 位置,${location}
  • 日历 ID,${calendarId}

我从我的问题下面的评论中了解到,查询字符串不应包含在路径字段中,因此问号后面的所有内容都应在“随请求发送参数”字段中处理。所以路径应该是这样的:

/myCalendar?
Run Code Online (Sandbox Code Playgroud)

并且名称/值对中的名称应使用每个等号之前存在的变量,如下所示:

  • c, ${calendarName}
  • l, ${location}
  • i、${calendarId 等}

我所有的测试现在都通过了,并按预期迭代了我的多个 .csv 文件。