我有一个JMeter测试,它有一个休息采样器,它在响应数据中输出一个值:
{ “VAR1”: “XXXXX-XXXXXXXX-XXXXXXXXXX”}
我需要取出那个输出(Var1)并在下面的测试步骤中将它用作下一个休息采样器的输入。我在BeanShell预处理器中有一行说:
String clearText =“somestring1”+“_”+ var1 +“:”+“somestring2”;
其中var1是从前面的RestSampler中的正则表达式提取器派生的(这就是我得到的输出{“Var1”:“xxxxx-xxxxxxxx-xxxxxxxxxx”})。
问题:我在第二个休息采样器的输出中得到了var1的空白。
我做错了什么?如何从第一个休息采样器的输出中获取值并将其用作第二个休息采样器的输入?
感谢。
ironmantis7x
答案 0 :(得分:2)
您确定正则表达式提取器正确获取Var1
吗?如果您正在测试RESTful API,最好使用JSON Path Extractor提供的JMeter Plugins(您需要使用附加Libs Set )。
按如下方式配置JSON路径提取器:
Var1
或您喜欢的任何内容$.Var1
此假设您的回复。 因此,您可以将变量值作为${Var1}
或${__V(Var1)}
提供给第二个请求。
有关如何正确安装扩展程序和构建JSON路径查询的详细信息,请参阅Using the XPath Extractor in JMeter(向下滚动到“解析JSON”)。
希望这会有所帮助。
答案 1 :(得分:0)
如果您的API以JSON格式返回响应,请使用以下解决方案:
#1要在同一线程组中使用此参数:- a]右键单击线程名称->单击“添加”->单击“后处理器”->选择“ Json提取器”
b]在“ Json Extractor”窗口中,选择以下值: 变量名称==测试//提供任何变量名称(用户定义) JSON路径表达式== $。[0] .name //将从API的Json响应中选择“名称”参数的值
c]现在使用$ {test}将此值作为输入传递给其他API。通过使用$ {test},您可以在任何地方使用它。
#2要在其他线程组中使用此$ {test}参数:- a]右键单击线程名称->单击“添加”->单击“后处理器”->选择“ Json提取器”
b]在“ Json Extractor”窗口中,选择以下值: 变量名称==测试//提供任何变量名称(用户定义) JSON路径表达式== $。[0] .name //将从API的Json响应中选择“名称”参数的值
c]右键单击“第一个线程名称”(其中填充了变量值)->单击“添加”->单击“声明”->选择“ BeanShell声明”
d]在“脚本”部分下,粘贴以下代码: $ {__ setProperty(test,$ {test})};
e]现在,您可以使用$ {__ property(test)}访问该第一个API的响应值 变量