我是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文件的参数,我会得到以下错误:
服务器在处理请求时遇到错误。异常消息为“值不能为空。参数名:埃达特
如果我将epochTime恢复为它的硬编码值,并将其他三个硬编码值替换为它们的相关参数,我会得到以下错误:
服务器在处理请求时遇到错误。异常消息为"base64到GUID的转换错误
我意识到这可能是一个完全不同的问题,但是这些值在硬编码到查询字符串中时确实有效,所以我不明白为什么如果从.csv文件中提取它们就不起作用。
最后,值得注意的是,我确实有使用以下语法的单参数测试用例,其中'Birthday'是用户定义的变量,如下所示。我发现在具有多个变量的查询字符串中使用此语法会在第一个'{'字符处抛出异常。
myCalendar/${Birthday}
任何帮助将不胜感激!
2条答案
按热度按时间hmtdttj41#
我的测试失败的原因仅仅是因为我在HTTP请求采样器的Path字段中输入了错误的信息。
最初,我的人生轨迹是这样的,
“Send Parameters With the Request”字段中的参数名称/值对为:
我从我的问题下面的评论中了解到,查询字符串不应该包含在路径字段中,所以问号之后的所有内容都应该在“Send Parameters With the Request”字段中处理。因此路径应该是这样的:
名称/值对中的名称应该使用存在于每个等号之前的变量,如下所示:
我的所有测试现在都通过了,并按预期迭代了多个.csv文件。
mqkwyuun2#
这些步骤解决了我的问题
1.创建线程组x1c 0d1x
csv文件数据
1.添加http请求在本节中,我试图调用我的localhost项目API。您需要在路径中设置${appName},并在主体部分添加以下代码
{“appName”:“${appName}”}
注意:这里appName用作变量,我们设置端口号为5000
4.添加查看结果树
在这里你可以看到,成功阅读csv文件行为“B”,对于选定的线程。对于下一个线程,这个值应该改变。
1.调试采样器(仅用于调试)