gpt4 book ai didi

JMeter setProperty 取决于 ResponseCode 或 String 值

转载 作者:行者123 更新时间:2023-12-05 01:00:11 25 4
gpt4 key购买 nike

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

但是,无法添加新用户的用户不会返回新添加用户的 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})}
}

或者
if (ResponseCode.equals("201") == true)
{
${__setProperty(teamAccountId${userId},${teamAccountId})}
}
else
{
${__setProperty(teamAccountId${userId},${__property(teamTestDelete)})}
}

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,然后可以使用它来保存每个不同用户的变量或属性。

    最佳答案

    我看到的第一个问题是这个片段:

    String teamResponse = "${teamAccountId}";

    看起来您正在尝试使用引用值 teamAccountId但正在使用引用名称。请替换为
    String teamResponse = vars.get(“teamAccountId”);

    类似的问题
    ${__setProperty(teamAccountId${userId},${__property(teamTestDelete)})}

    我会把这个写成
    props.put("teamAccountId" + vars.get("userId"), props.get("teamTestDelete"))

    显然,这也更容易阅读/解析和理解:)

    关于JMeter setProperty 取决于 ResponseCode 或 String 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29845580/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com