小编Yve*_*ens的帖子

JMeter 在特定条件下启用/禁用 HTTP 请求采样器

我有一些 HTTP 请求采样器,我只想在满足特定条件时执行它们。我所做的就是使用以下代码将 BeanShell 预处理器添加到 HTTP 请求采样器

if (${getTeamName}.equals("Test Team") == true)
{
    HTTPSampler.setEnabled(false);
}
Run Code Online (Sandbox Code Playgroud)

如果 getTeamName 的值是Test Team,那么我想禁用该 HTTP Request Sampler,因为那时不必执行它。但目前看来这不起作用。

有谁知道我在这里做错了什么,或者对我应该做什么提出建议?

jmeter httprequest

5
推荐指数
1
解决办法
3442
查看次数

JMeter setProperty取决于ResponseCode或String值

我正在编写一个测试,其中不同的用户拥有向团队添加和删除其他用户的不同权限.该测试检查用户是否可以向团队添加新用户或从团队中删除现有用户.

但是,无法添加新用户的用户将无法获得返回的新添加用户的ID,因此他们没有用于测试删除的ID.为此,我添加了一个用户,在该用户上,不允许删除该用户的用户可以对其进行测试.

当我运行测试时,总是在同一个用户上尝试删除,也允许那些被允许邀请新用户的用户.

我尝试使用BeanShell PostProcessor和BeanShell Assertion来添加正确的id,具体取决于用户是否应该能够邀请新用户.

String teamResponse = "${teamAccountId}";
if (teamResponse == null)
{
    ${__setProperty(teamAccountId${userId},${__property(teamTestDelete)})}
}
else if (teamResponse.length() > 0)
{
    ${__setProperty(teamAccountId${userId},${teamAccountId})}
}
Run Code Online (Sandbox Code Playgroud)

要么

if (ResponseCode.equals("201") == true)
{
    ${__setProperty(teamAccountId${userId},${teamAccountId})}
}
else
{
    ${__setProperty(teamAccountId${userId},${__property(teamTestDelete)})}
}
Run Code Online (Sandbox Code Playgroud)

teamTestDelete是来自另一个线程的属性,我在其中创建了用户,以便为那些无法邀请新用户的用户测试删除.如果此用户返回例如id 100,那么我的所有删除测试都会尝试删除id 100,即使他们应该尝试从teamAccountId中删除id.

该行${__setProperty(teamAccountId${userId},${teamAccountId})} 本身就是这样工作的,因为我在尝试使用teamTestDelete中的id为无法邀请其他用户的用户之前自己使用了这一行.

这里的任何人都知道为什么它总是为所有用户使用teamTestDelete id,即使是那些应该从teamAccountId获得一个用户的人?就像BeanShell PostProcessor或Assertion永远不会进入第一个例子的"else if"或第二个例子的"if".非常感谢所有的帮助.

示例场景:

  • UserA有权邀请和删除团队中的用户.
  • UserB有权邀请和删除团队中的用户.
  • UserC无权邀请和删除团队中的用户.
  • UserD无权邀请和删除团队中的用户.

首先,我创建一个ID为100的用户.然后,UserA尝试邀请新用户并成功,它的ID为201. UserB尝试邀请新用户并成功,其ID为202. UserC和UserD都尝试邀请新用户,但失败,因为他们没有权利.

对于删除我希望UserA尝试删除ID为201的用户,我希望UserB尝试删除ID为202的用户,我希望UserC和UserD尝试删除ID为100的用户.

邀请用户是一个单个线程,它为每个用户循环多次,在本例中为4次,并且有一个计数器随每个循环增加以指定userId.删除用户是另一个线程,它也循环.在我的示例代码中,我有时会有$ {userId},它指的是来自计数器的userId.例如,UserA将具有userId = 1.

通过循环线程并每次增加计数器,每个用户都获得自己的userId,然后可以使用它来为每个不同的用户保存变量或属性.

jmeter beanshell

4
推荐指数
1
解决办法
6737
查看次数

标签 统计

jmeter ×2

beanshell ×1

httprequest ×1