在 for 循环中重新使用 CSV:在 Jmeter 中使用 roles/permission

Re-using CSV in for loop: Using roles/permission in Jmeter

我正在做 API 测试。我已经有了用于 API 测试的测试脚本。但是,现在业务引入了角色和权限的概念。

例如,有一个用户(SuperAdmin),创建用户、查看用户、更新用户和删除用户有API个。

一开始不引入角色和权限还好

现在,商家引入了新用户Admin,Admin只能查看用户。

如何在我的脚本中实现多个用户 roles/permission 而无需进行重大更改?

注意:我的脚本中有 100 多个 API 个采样器。

你问的不是很清楚

通常您应该使用不同的 Thread Groups 来表示不同的业务用户逻辑组,因此您需要:

  1. 可以访问所有端点的“超级管理员”线程组
  2. 有权查看用户端点的“admins”线程组
  3. “用户”线程组只能访问用户内容
  4. 等等

为了避免“发生剧烈变化”,您可以在 Test Fragments 下使用 Test Fragments and Module Controllers, this way you can keep HTTP Request 采样器并多次引用它

另一个选项是使用 Response Assertion 忽略状态代码,例如,如果您希望 HTTP 状态代码 200 用于“超级管理员”,而 HTTP 状态代码 401 用于“普通管理员”,您可以使用以下设置:

使用Beanshell Sample关闭CSV文件,因为它已被第一个用户使用。因此,当第二个用户访问该 CSV 文件时会导致错误。因此,退出While循环后立即关闭CSV文件。

import org.apache.jmeter.services.FileServer;
FileServer.getFileServer().closeFile("${testPlanFileDir}${__BeanShell(File.separator,)}adminApprovalSettings.csv");
vars.put("iterationApprovalLSettings", "");

在 HTTP 请求中。使用将根据用户类型断言的 BeanShell 断言。

if("${users}".equals("SuperAdmin"))
{
    if (ResponseCode.equals ("${response}") == true )
        {
        Failure= false ;
        prev.setResponseOK();
        }

        else 
        {
        Failure=true ;
        FailureMessage ="Response code was not, " +${response} + "it was"  + ResponseCode + "." ;
        }
}

else
{
    if (ResponseCode.equals ("403") == true )
        {
        Failure= false ;
        prev.setResponseOK();
        }

        else 
        {
        Failure=true ;
        FailureMessage ="Response code was not 403, it was " + ResponseCode + "." ;
        }
}