我有一个创建属测试2线的团体--首先是一个单一的线(创造一些库存)和第二个有多个线程(其购买的所有库存)。我使用的断言或平板电脑和XPath提取,以分析返回价值的(这是XML)和储存变量(例如身份证的项目是购买).

但是,值,是建立在第一线的集团,是否提取到的标准 ${jmeter} 类型的变量,或者 ${__BeanShell(vars.get("jmeter"))} 类型vars,都没有提供第二线集团。反正是有为创建一个变量,在第一线的集团,并使其看到的吗?

有帮助吗?

解决方案

我无法与变量做到这一点(因为这些是本地到各个线程)。不过,我可以用属性来解决这个问题!

再次我的第一个线程组完成所有的设置,我需要从工作的一些信息提供给每个线程的线程组第二。我有一个BeanShell的断言与以下所述第一线程组:

${__setProperty(storeid, ${storeid})};

在$ {STOREID}用的XPath提取器提取。 BeanShell的断言确实其他东西,比如检查STOREID从先前的呼叫等返回。

总之,在第二线程组,我可以在取样器具有以下使用“STOREID”属性的值:

${__property(storeid)}

就像一个魅力!

其他提示

根据创建属文件:

16.12共变量之间的线和基线

变量是本地的一个线程的一个变量设置在一个线程中不能阅读 另一个。这是通过设计。变量,可以确定 之前的测试开始,请参见参数设定试验(同上)。如果值 不知道直到试验开始的,有的各种选项:

  1. 储存变为一个属性-性是全球性的 创建属实例
  2. 写入变量的文件和重新阅读。
  3. 使用的bsh.共用名称空间看看 16.8.2共变量
  4. 写你自己的Java类

另一种方式通过变量之间线是利用创建属-插件 提及由安德烈*Botalov下.

但我发现,它是一个有点令人混淆的使用它第一次,但它提供了完全控制的可变间通过从螺纹的螺纹。按照我的例子与或平板电脑使用和你看到它是多么容易:

Project stucture 下一个参考部分的画面下:

(1.1)在这里,我创造了自定义中的变量定义的用户变量(或者你可以做到这一BSF Proccessor-残疾人在这个实例(1.2))

(2.1)(2.4)我成功地使用的变量,在第一线没有什么特别的:)

(2.2)加入或平板电脑后处理和定制的变我

(2.3)加入到队列

(3.1)在第二线变取自队列-任何你想要的名称。但是要小心,明智地使用超时的,因为这个线程将等待,直到前完成,所以它可以得到修改,变量(实验的一些长的响应)

(3.2)(3.3)(第3、4),重复步骤的使用,并改变

(3.5)可变发送一次,在新的队列-所以提供新的名字给它

(4.1)(4.2)(4.3)抓住改变从新的队列中的作品像魅力

警告

  1. 如果增加更多的线,然后添加一些反向螺纹组具有可变和加入这一变量名列名做同样的在线组试捕队这样的队列将有独特的名字对每个螺纹(编写评论,如果你需要一些更明确的解释)

  2. 如果你有多于一个http请求在一个线组随后加入线通信的预处理器作为一个孩子的最后一次(或其他的如果你想要实现的一些定义事)http请求

玩,修改定义,以获得最好的结果:)添加更多线程可能导致不必要的行为所以你需要警惕.

Information about project structure

我发现我相信这是最简单的方法来完成这件事。

使用

Bean Shell PostProcessor

来设置变量( http://jmeter.apache.org/usermanual /best-practices.html#bsh_variables

import org.apache.jmeter.util.JMeterUtils;
JMeterUtils.setProperty("PC_CREATED_PROMO_CODE", "value");

OR如果从读取变量

import org.apache.jmeter.util.JMeterUtils;
JMeterUtils.setProperty("PC_CREATED_PROMO_CODE", vars.get("Extracted_PC_CREATED_PROMO_CODE"));

和然后从其他线程组,经由( HTTP读取它:// JMeter的。 apache.org/usermanual/functions.html#__property

${__property(PC_CREATED_PROMO_CODE)}

创建属插件已 间-通信线 用于这一目的。

有2种方法的使用:

  • 后处理/预处理器
  • 功能 __fifoPut__fifoPop

在我的意见后处理/预处理器更容易使用。

这是不可能的JMeter,因为它是不正常的客户端行为(线程之间共享的参数)。代替此使用一个线程组与控制器的:

Thread Group
+ Create inventory
+ + XPath
+ Loop
+ + Purchase inventory

那么这是做到这一点的一种方式;请按照下列步骤,它会工作,以后你可以把它调整到您的需求!变量不是线程之间共享(JMeter的要求大概是这样的一个功能:))。但是性能!因此请设置变量像这样一个属性格式:

1)点击您的测试计划和使能“运行的线程组连续” - >这使得线程组运行有序,而不是随机。 (您以后可以调整它,但现在得到它的工作..)

2)创建一个名为“设置”例如线程组;该线程组中的添加BeanShell的采样用下面的代码:

import org.apache.jmeter.util.JMeterUtils;
JMeterUtils.setProperty("theNameOfYourNewProperty", "theValueOfYourPropery");

所以,现在的属性已设置!如果要存储为属性格式的值是媒体链接变量(用户definded对于实例变量或reqex变量)可以这样做:

JMeterUtils.setProperty("theNameOfYourNewProperty", vars.get("theNameOfYourVariable"));

3)添加一个testgroup“实际测试”的实例与数大于1的线程;    添加测试并于该测试添加BeanShell的预处理器用下面的代码:

import org.apache.jmeter.util.JMeterUtils;
vars.put("theNameOfYourNewProperty", JMeterUtils.getProperty("theNameOfYourNewProperty"));

所以,现在你已经创建了一个线程称为theNameOfYourNewProperty其中有您的系统属性theNameOfYourNewProperty的值的变量。在您的测试,你现在就可以访问它,如:

${theNameOfYourNewProperty}

和它会为每个线程工作,不只是第一个线程..

让”给一个主题的第二次生命:)另一种方式在线程之间转移变量是写入/读取到文件。 在线程之间传递变量

另一个解决方案是使用简单的表服务器来管理数据集。 这个特点是添加1.2 JMeter的插件。

“的主要思想是使用JMeter的插件一个小的HTTP服务器与简单的命令数据集的文件管理为获得 / 添加在文件中的数据行”

看的文档: http://jmeter-plugins.org/wiki/HttpSimpleTableServer/

问候。

“JMeter的豆壳断言”

只需添加一个豆壳断言使用属性函数值分配给一个变量(如全局变量)将举行它关系到其他线程,甚至后的值。

  

线程组>>添加>> >>断言豆壳断言

${__setProperty(Global_variable_Name,${Variable_name_whose_Value_to_be_Passed})}

,然后在另一个线程就可以调用这个全局变量,可以用它

下面是需要使用来调用存储值功能:

${__property(global_variable_name)}

https://medium.com/@priyank 。它/ JMeter的-通过变量之间线程-a4dc09903b59

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top