是否可以使用变量确定http请求方法(POST/GET)?

Is it possible to determine the http request method (POST/GET) using a variable?

我正在使用一个 csv 文件作为我的请求的基础。问题是,我有一些 GET 请求和一些 POST 请求。有没有办法对两种请求类型使用相同的 http 请求元素,其中方法将由 csv 文件中的变量确定?

有2个选项:

  1. 使用HTTP Raw Request available via JMeter Plugins
  2. 在 Java 中编写您的自定义逻辑。请参阅 How to Load Test AJAX/XHR Enabled Sites With JMeter 的 "How to Write a Custom AJAX Request Sampler" 章节了解如何做到这一点。

最直接的解决方案是在测试计划中有两个请求,一个是 GET,一个是 POST。这并不能完全满足您使用 SAME 请求元素的要求,但这可能是最佳解决方案。

将每个嵌套在它们自己的 IF 控制器中,从 CSV 中读取值。

例如,假设 csv 如下: http_method、主机、路径、参数...

第一个 IF 可以是:

"${http_method}" == "GET"

然后下一个:

"${http_method}" == "POST"

CSV 中的每一行只会对其中一个语句进行评估,然后进行正确的 POST 或 GET 调用。

使用 Beanshell 预处理器非常简单。

为您现有的 HTTP 请求添加一个 Beanshell 预处理器。让我们假设默认的 HTTP 方法是 GET.

现在,每当 csv 变量 'method' 为 'POST'

时,我们将其更改为 POST
if(vars.get("method").equalsIgnoreCase("POST")){
     sampler.setMethod("POST");  //this will change current sampler's http method from GET to POST. 
}