如何在Jmeter中设置和获取环境变量来测试API

时间:2018-01-25 11:12:38

标签: jmeter jmeter-plugins jmeter-3.2

我需要在Jmeter中为API自动化设置和获取变量。

我正在使用groovy脚本。

我使用以下代码实现了相同的目标:

import org.apache.jmeter.util.JMeterUtils;

JMeterUtils.setProperty("PC_CREATED_PROMO_CODE", "shubhamvalue");

log.info("will it work? ="+JMeterUtils.getProperty("PC_CREATED_PROMO_CODE"))

现在问题是我无法在任何可以设置我的硬编码值(如token,baseURL,Headers)的contanier中看到该值。它应该与SOAP-UI或postman测试中的类似。

如果我能在Jmeter中的文件/部分/容器中看到这些setProperty值,请告诉我。

或建议我任何其他更可行的解决方法。

enter image description here

任何解决方法都会提前提供帮助和赞赏。

3 个答案:

答案 0 :(得分:1)

如果您需要设置变量,我建议您使用vars简写

根据documentation

  

属性与变量不同。 变量是线程的本地变量;属性对所有线程都是通用的,需要使用__P或__property函数进行引用。

所以我建议将变量设置为:vars.put('foo', 'bar')并在需要时将其作为${foo}访问,因为我期望您为每个线程(虚拟用户)获得不同的PC_CREATED_PROMO_CODE < / p>

另请注意,建议尽可能避免编写脚本,因此请考虑使用JSON Extractor

答案 1 :(得分:0)

要查看文件/部分中的属性,您可以使用2个函数__property__P,而第二个函数将默认返回1。在你的情况下

${__property(PC_CREATED_PROMO_CODE)}

${__P(PC_CREATED_PROMO_CODE)}

例如,您可以将下一个采样器名称更改为Post2 ${__property(PC_CREATED_PROMO_CODE)}

顺便说一句,您可以设置属性使用props而不是

 props.setProperty("PC_CREATED_PROMO_CODE", "shubhamvalue" )

在HTTP标头管理器中使用的示例,从属性添加cotentType:

答案 2 :(得分:0)

1)在JMeter GUI模式下,在WorkBench下,创建属性显示依据 WorkBench&gt;添加&gt;非测试元素&gt;物业显示。 然后选择JMeter Properties复选框以查看所有存在的属性

props.put("shubhamKey", "shubhamValue")

执行此代码时,属性将设置在属性文件中,您可以在以下位置看到它:

  

WorkBench&gt;添加&gt;非测试元素&gt;物业展示。

2)现在,如果您想在脚本中使用用户定义变量,可以调用以下值:

vars.get("shubhamUserKey")

仍然希望从用户定义变量

中的代码设置值