在 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 来表示不同的业务用户逻辑组,因此您需要:
- 可以访问所有端点的“超级管理员”线程组
- 有权查看用户端点的“admins”线程组
- “用户”线程组只能访问用户内容
- 等等
为了避免“发生剧烈变化”,您可以在 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 + "." ;
}
}
我正在做 API 测试。我已经有了用于 API 测试的测试脚本。但是,现在业务引入了角色和权限的概念。
例如,有一个用户(SuperAdmin),创建用户、查看用户、更新用户和删除用户有API个。
一开始不引入角色和权限还好
现在,商家引入了新用户Admin,Admin只能查看用户。
如何在我的脚本中实现多个用户 roles/permission 而无需进行重大更改?
注意:我的脚本中有 100 多个 API 个采样器。
你问的不是很清楚
通常您应该使用不同的 Thread Groups 来表示不同的业务用户逻辑组,因此您需要:
- 可以访问所有端点的“超级管理员”线程组
- 有权查看用户端点的“admins”线程组
- “用户”线程组只能访问用户内容
- 等等
为了避免“发生剧烈变化”,您可以在 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 + "." ;
}
}