【问题标题】:Passing whole body as a variable to a POST request将整个正文作为变量传递给 POST 请求
【发布时间】:2017-10-24 14:30:43
【问题描述】:

我正在尝试使用 JMeter 创建一个简单的压力测试。我主要有 GET 请求和几个 POST 请求。我的主要目标是让这个测试尽可能地可重用。我想以用户必须提供具有以下标题的 CSV 文件的方式实现它:

method;path;postBody

这些值看起来像:

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

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

有没有办法做到这一点?命令行解决方案也非常受欢迎。

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

【问题讨论】:

  • 什么不起作用?也许您还需要来自 CSV 的标题
  • 不清楚究竟是什么不起作用。对于 POST,发送 ${postBody} 作为正文应该可以工作,只要它是正确的 url 编码的。 GET 通常需要带有 URL 的参数(因此应该在路径上)。但是由于我们不知道什么不起作用,因此也可能有 100 多个其他原因
  • 请查看更新后的问题。

标签: jmeter load-testing


【解决方案1】:

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

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

  • 参数选项卡用于以 name=value 形式输入参数

  • 身体数据适合您的需求

那么您能否检验我的假设,即删除 CSV 文件中请求周围的引号?

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

【讨论】:

  • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
  • 第一部分是答案。你在哪里看到批评?谢谢
  • 好的,谢谢!我对警告如此着迷,认为这是一个错误。
【解决方案2】:

您可以留在身体数据标签中,

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

 ${pathPost}?${getPramaters}

不用担心? 它只是与参数分开的路径

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

在 JSON 中 , 在值之间分开,而在 CSV 中默认也是 ,

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

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

【讨论】:

  • 你是对的 pathPost 应该是 path。但问题出在发布请求的正文中,我无法将正文数据作为从 CSV 检索到的变量提供。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-16
  • 2021-11-12
  • 2017-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多