JMeter:使用 CSV 数据将参数传递给 HTTP GET 请求查询字符串
JMeter: Passing parameters to an HTTP GET request query string using CSV data
我是 JMeter 的新手,正在创建负载测试。我在 HTTP 采样器中有一个 GET 请求,如下所示:
/myCalendar?c={calendarName}&l={location}&i={calendarId}&loc={locationId}&s={calendarEvent}&a={eventId}&t={epochTime}
大括号中显示的名称是我的参数名称。这些参数中的每一个都有自己的 .csv 文件,因此也有自己的 CSV 数据集配置元素。这些参数中的每一个也都链接到 HTTP 采样器中 "Send Parameters With the Request" 字段中各自的 CSV 文件。
我的测试失败了,但我可以通过单击结果树中的失败测试指示器来判断所有参数都从我的 .csv 文件中返回正确的值。但是,我注意到在某些情况下,如果我仅将某些值硬编码到查询字符串中,测试将通过。
例如,这失败了...
/myCalendar?c=calendarName&l=location&i=calendarId&loc=locationId&s=calendarEvent&a=eventId&t=epochTime
...但这通过了:
/myCalendar?c=calendarName&l=BMJErIH4Mku4HwdHyuX2XA&i=84Rza73ERUmRGb99NWZytw&loc=locationId&s=calendarEvent&a=odH1gBRnH0moh5YN4tgczw&t=157963549
如果我通过将硬编码的 epochTime 替换为指向 .csv 文件的参数来修改传递的请求,我会收到以下错误:
The server encountered an error processing the request. The exception
message is 'Value cannot be null. Parameter name: edate
如果我将 epochTime 恢复为其硬编码值并将其他三个硬编码值替换为它们的关联参数,我会收到以下错误:
The server encountered an error processing the request. The exception
message is 'bad base64 conversion to GUID
我意识到这可能是一个完全不同的问题,但这些值在硬编码到查询字符串中时确实有效,所以我不明白为什么如果从 .csv 文件中提取它们就不起作用。
最后,值得注意的是,我确实有使用以下语法的单参数测试用例,其中 'Birthday' 是用户定义的变量,如下所示。我发现在具有多个变量的查询字符串中使用此语法会在第一个“{”字符处引发异常。
myCalendar/${Birthday}
如有任何帮助,我们将不胜感激!
我的测试失败的原因仅仅是因为我在 HTTP 请求采样器的路径字段中输入了错误的信息。
最初,我的路径是这样的,
/myCalendar?c=calendarName&l=location&i=calendarId&loc=locationId&s=calendarEvent&a=eventId&t=epochTime
和 "Send Parameters With the Request" 字段中的参数 name/value 对是:
- 日历名称,${日历名称}
- 位置,${位置}
- calendarId, ${calendarId}
我从问题下面的评论中了解到,查询字符串不应包含在路径字段中,因此问号后的所有内容都应在 "Send Parameters With the Request" 字段中处理。所以路径应该是这样的:
/myCalendar?
并且 name/value 对中的名称应该使用每个等号之前存在的变量,如下所示:
- c, ${calendarName}
- l, ${location}
- i、${calendarId 等}
我所有的测试现在都通过了,并按预期迭代了我的多个 .csv 文件。
我是 JMeter 的新手,正在创建负载测试。我在 HTTP 采样器中有一个 GET 请求,如下所示:
/myCalendar?c={calendarName}&l={location}&i={calendarId}&loc={locationId}&s={calendarEvent}&a={eventId}&t={epochTime}
大括号中显示的名称是我的参数名称。这些参数中的每一个都有自己的 .csv 文件,因此也有自己的 CSV 数据集配置元素。这些参数中的每一个也都链接到 HTTP 采样器中 "Send Parameters With the Request" 字段中各自的 CSV 文件。
我的测试失败了,但我可以通过单击结果树中的失败测试指示器来判断所有参数都从我的 .csv 文件中返回正确的值。但是,我注意到在某些情况下,如果我仅将某些值硬编码到查询字符串中,测试将通过。
例如,这失败了...
/myCalendar?c=calendarName&l=location&i=calendarId&loc=locationId&s=calendarEvent&a=eventId&t=epochTime
...但这通过了:
/myCalendar?c=calendarName&l=BMJErIH4Mku4HwdHyuX2XA&i=84Rza73ERUmRGb99NWZytw&loc=locationId&s=calendarEvent&a=odH1gBRnH0moh5YN4tgczw&t=157963549
如果我通过将硬编码的 epochTime 替换为指向 .csv 文件的参数来修改传递的请求,我会收到以下错误:
The server encountered an error processing the request. The exception message is 'Value cannot be null. Parameter name: edate
如果我将 epochTime 恢复为其硬编码值并将其他三个硬编码值替换为它们的关联参数,我会收到以下错误:
The server encountered an error processing the request. The exception message is 'bad base64 conversion to GUID
我意识到这可能是一个完全不同的问题,但这些值在硬编码到查询字符串中时确实有效,所以我不明白为什么如果从 .csv 文件中提取它们就不起作用。
最后,值得注意的是,我确实有使用以下语法的单参数测试用例,其中 'Birthday' 是用户定义的变量,如下所示。我发现在具有多个变量的查询字符串中使用此语法会在第一个“{”字符处引发异常。
myCalendar/${Birthday}
如有任何帮助,我们将不胜感激!
我的测试失败的原因仅仅是因为我在 HTTP 请求采样器的路径字段中输入了错误的信息。
最初,我的路径是这样的,
/myCalendar?c=calendarName&l=location&i=calendarId&loc=locationId&s=calendarEvent&a=eventId&t=epochTime
和 "Send Parameters With the Request" 字段中的参数 name/value 对是:
- 日历名称,${日历名称}
- 位置,${位置}
- calendarId, ${calendarId}
我从问题下面的评论中了解到,查询字符串不应包含在路径字段中,因此问号后的所有内容都应在 "Send Parameters With the Request" 字段中处理。所以路径应该是这样的:
/myCalendar?
并且 name/value 对中的名称应该使用每个等号之前存在的变量,如下所示:
- c, ${calendarName}
- l, ${location}
- i、${calendarId 等}
我所有的测试现在都通过了,并按预期迭代了我的多个 .csv 文件。