在测试计划中执行特定的JMeter线程组

5
我已经阅读了与我的问题相同的帖子,但是没有足够的细节让我弄清楚。所以我想知道是否有人能纠正我做错的事情。正如问题所述,我想使用CLI从测试计划中运行单个线程组。
我的测试计划包含4个线程组。每个线程组都完全相同,除了每个线程组中的Cookie Manager包含特定Cookie的不同值之外。因此,当我从命令行运行时,我想告诉JMeter仅执行线程组1或2或3等...到目前为止,我所读到的是您可以使用While控制器和变量来实现这一点,但我似乎无法使其工作。
我的测试计划如下:
+ 测试计划 - 登录 + 线程组 - 服务器1登录 - While控制器(*带有变量“server1ThreadActive”) - HTTP请求默认值 - Cookie管理器 + HTTP请求-加载主页 + HTTP请求-加载登录页面 + HTTP请求-登录表单 + HTTP请求-做某事 + HTTP请求-做其他事情 + HTTP请求-注销 + 线程组 - 服务器2登录 - While控制器(*带有变量“server2ThreadActive”) - HTTP请求默认值 - Cookie管理器 + HTTP请求-加载主页 + HTTP请求-加载登录页面 + HTTP请求-登录表单 + HTTP请求-做某事 + HTTP请求-做其他事情 + HTTP请求-注销
因此,以上测试计划还有2个完全相同的线程组用于服务器3和4...我是否已经在正确的位置配置了While循环?
第一次尝试:While控制器条件设置如下:
条件(函数或变量)= "${__P(server1ThreadActive)}" == "false"
然后为了仅执行Server 2的线程,我会在CLI上使用以下命令:
jmeter -n -t Server_Login.jmx -Jserver1ThreadActive=true 结果是当我只想运行Server 2线程时,所有4个线程都在执行。
第二次尝试:While控制器条件设置如下:
条件(函数或变量)= ${__P(server1ThreadActive)}

命令行:想要只执行Server 2的线程,可以在CLI中使用以下命令。假设如果没有在while控制器中进行值赋值,则默认为true,因此将所有变量设置为false,除了要运行的变量:

jmeter -n -t Server_Login.jmx -Jserver1ThreadActive=false -Jserver3ThreadActive=false -Jserver4ThreadActive=false

结果:这会导致所有4个线程都被执行,而我只想运行Server 2的线程。

其他还有一些方法,但我认为它们也是错误的,因为结果相同。我尝试添加一个用户定义的变量部分并创建4个变量,但无法弄清楚...... 我甚至尝试创建一个名为“Server_Login.properties”的文件,并插入这些变量名称,每个变量一行,其值设置为false,然后使用-S选项将其包括在命令行中,但没有成功......

有人能告诉我我错在哪里吗? 如有任何想法或建议,将不胜感激!

提前感谢, Matt

1个回答

7
请点击此处查看更多详细信息。 http://www.testautomationguru.com/jmeter-manage-test-plan/
如果线程用户数为 0,则 JMeter 将不执行该线程组。
因此,您可以使用变量来决定要运行的线程组 - 用户数。 使用属性: 拥有一个包含以下属性和值的属性文件(仅执行线程组 2):
threadgroup1.users=0
threadgroup2.users=10
threadgroup3.users=0
threadgroup4.users=0

在“线程组”中的“线程数”字段,请使用${__P(threadgroup1.users)}命令行选项传递属性文件。
 jmeter -n -t /path/to/test.jmx -l /path/to/log.jtl -p /path/to/file.properties

使用用户定义的变量:

只需创建一个带有适当值的用户定义变量 &。

可以直接在测试中使用${threadgroup1.users}来访问它。


嗨Vinoth,谢谢回复!好的,太棒了...我会尝试一下并回复我的结果。再次感谢! - Matt
@Matt,请查看此链接:http://www.testautomationguru.com/jmeter-manage-test-plan/。 - vins
好的,太棒了,谢谢!那是一个很好的指南...感谢您提供的链接,非常感激..!我以为我已经回复我的结果了,但我想不见它在这里。我能够实现你所建议的。我创建了一个属性文件,每个线程组的用户都有一个变量,并且我传递相等于我想要运行的用户数量的变量,只有该线程组运行...所以它完美地工作!再次感谢您的建议!! - Matt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接