将整个 body 作为变量传递给 POST 请求

Passing whole body as a variable to a POST request

我正在尝试使用 JMeter 创建一个简单的压力测试。我主要有 GET 请求和几个 POST 请求。我的主要目标是使该测试尽可能可重用。我想以用户必须提供具有以下 headers:

的 CSV 文件的方式实现它
method;path;postBody

这些值看起来像:

GET;/path/to/resource;''
POST;/path/to/resource;'{"key":"value","key":"value","key":"value"}'

现在 POST(PUT、PATCH 等 ..)主体因请求而异。提供 ${postBody} 到 Body 数据选项卡也不起作用 "${postBody}"

有办法实现吗?命令行解决方案也非常受欢迎。

编辑: 澄清一下,我使用的是 UI 界面。当我在 Body 数据选项卡中输入 ${postBody} 时,UI 会抱怨。从 Body 数据选项卡切换到另一个选项卡时,我收到以下提示:

删除请求周围的“'”,它应该可以工作。

关于您收到的警告,这不是错误,只是在 JMeter 中这两个选项卡是互斥的:

  • Parameters 选项卡用于以 name=value

  • 形式输入参数
  • Body数据满足你的要求

那么你能验证我的假设吗?即删除 CSV 文件中请求周围的引号?

如果仍然失败,请显示日志。

您可以保留在 Body 数据选项卡中,

在 pathPost 之后添加 GET 请求的可选查询参数:

 ${pathPost}?${getPramaters}

不用担心 ? 它只是来自参数的单独路径

也可以考虑把变量名改成路径,比较合适,可以是POST.

在 JSON , 中分隔值,而在 CSV 中默认值也是 ,

我建议你可以使用你的 CSV 分隔符,在 CSV Data Set Config 中选择不同的分隔符作为 ; 并相应地在 CSV 中添加你的数据(删除额外的 ' 字符):

POST;/path/to/resource;{"key":"value","key":"value","key":"value"}
  • 注意:允许引用的数据保留默认值False