Jmeter 吉米特jp@gc参数化控制器-从变量构造对象
如何使用仅从中获取的属性构造对象jp@gc-参数化控制器用户定义变量列表,可用于以后为HTTP采样器动态构建xml/json数据结构 控制器变量: HTTP请求正文的XML结构: 例1:Jmeter 吉米特jp@gc参数化控制器-从变量构造对象,jmeter,xml-parsing,jmeter-plugins,Jmeter,Xml Parsing,Jmeter Plugins,如何使用仅从中获取的属性构造对象jp@gc-参数化控制器用户定义变量列表,可用于以后为HTTP采样器动态构建xml/json数据结构 控制器变量: HTTP请求正文的XML结构: 例1: <?xml version="1.0" encoding="UTF-8"?> <login> <username>someUser</username> <password>1234</password
<?xml version="1.0" encoding="UTF-8"?>
<login>
<username>someUser</username>
<password>1234</password>
</login>
某个用户
1234
它正在保存JMeter变量,因此您可以使用${}
语法
<userName>${username}</userName>
<password>${password}</password>
${username}
${password}
要在XML正文中动态获取变量,请使用以下示例
import java.util.stream.StreamSupport;
String xmlBody="<?xml version=\"1.0\" encoding=\"UTF-8\"?><login>";
StreamSupport.stream(Spliterators.spliteratorUnknownSize(vars.getIterator(), Spliterator.ORDERED), false).forEach(
e -> xmlBody+="<" +e.getKey() + ">" +e.getValue() + "</" +e.getKey() + ">");
xmlBody += "</login>";
log.info(xmlBody);
import java.util.stream.StreamSupport;
字符串xmlBody=“”;
StreamSupport.stream(Spliterators.spliteratorUnknownSize(vars.getIterator(),Spliterator.ORDERED),false)(
e->xmlBody++=“e.getValue()+”;
xmlBody+=“”;
log.info(xmlBody);
它正在保存JMeter变量,因此您可以使用${}
语法
<userName>${username}</userName>
<password>${password}</password>
${username}
${password}
要在XML正文中动态获取变量,请使用以下示例
import java.util.stream.StreamSupport;
String xmlBody="<?xml version=\"1.0\" encoding=\"UTF-8\"?><login>";
StreamSupport.stream(Spliterators.spliteratorUnknownSize(vars.getIterator(), Spliterator.ORDERED), false).forEach(
e -> xmlBody+="<" +e.getKey() + ">" +e.getValue() + "</" +e.getKey() + ">");
xmlBody += "</login>";
log.info(xmlBody);
import java.util.stream.StreamSupport;
字符串xmlBody=“”;
StreamSupport.stream(Spliterators.spliteratorUnknownSize(vars.getIterator(),Spliterator.ORDERED),false)(
e->xmlBody++=“e.getValue()+”;
xmlBody+=“”;
log.info(xmlBody);
假设您的上述设置,您可以引用声明的变量,如:
<?xml version="1.0" encoding="UTF-8"?>
<login>
<username>${username}</username>
<password>${password}</password>
</login>
${username}
${password}
这将导致运行时变量替换为其各自的值,可使用i..e listener进行检查:
有关JMeter测试参数化的各种方法的更多信息,请参阅本文 假设您的上述设置,您可以引用声明的变量,如:
<?xml version="1.0" encoding="UTF-8"?>
<login>
<username>${username}</username>
<password>${password}</password>
</login>
${username}
${password}
这将导致运行时变量替换为其各自的值,可使用i..e listener进行检查:
有关JMeter测试参数化的各种方法的更多信息,请参阅本文 xml结构不是静态的,必须基于jp@gc-参数化控制器UDVlist@NikolayMarinov好吧,没有一种内置的方法可以动态地知道哪些变量是在controllerI中定义的,我假设它可以通过ctx.getVariables()完成,但不确定如何遍历它。@NikolayMarinov,但您还有其他JMeter变量,如
JMeterThread.last_sample_ok
,START.YMD
,…我希望UDV列表jp@gcxml结构不是静态的,必须基于jp@gc-参数化控制器UDVlist@NikolayMarinov好吧,没有一种内置的方法可以动态地知道哪些变量是在controllerI中定义的,我假设它可以通过ctx.getVariables()完成,但不确定如何遍历它。@NikolayMarinov,但您还有其他JMeter变量,如JMeterThread.last_sample_ok
,START.YMD
,…我希望UDV列表jp@gc可以通过某种方式进行过滤,如果输入列表在jp@gc-参数化控制器是动态的?然后您可以向其添加前缀或后缀,以便能够区分参数化控制器中定义的变量与其他变量。完成后,您应该能够使用Java和Groovy语言动态构建XML请求体。它提供了允许操纵请求细节的实例jp@gcUDV list根本没有以映射或列表的形式公开,以后可以访问?它只是将定义的值添加到“普通”JMeter变量中:Dmitri,如果输入列表在jp@gc-参数化控制器是动态的?然后您可以向其添加前缀或后缀,以便能够区分参数化控制器中定义的变量与其他变量。完成后,您应该能够使用Java和Groovy语言动态构建XML请求体。它提供了允许操纵请求细节的实例jp@gcUDV list根本没有以映射或列表的形式公开,稍后将被访问?它只是将定义的值添加到“普通”JMeter变量中: