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

时间:2017-10-24 14:30:44

标签: jmeter load-testing

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

method;path;postBody

值看起来像:

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

现在POST(PUT,PATCH等......)机构因一个请求而异。向“正文数据”标签提供${postBody}也不起作用{。}}。

有没有办法实现这个目标?命令行解决方案也非常受欢迎。

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

Error prompt

2 个答案:

答案 0 :(得分:0)

您可以保留在“正文数据”选项卡

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

?

不要担心,它只是参数的单独路径

另外考虑将变量名称更改为路径,更合适,因为它可以是POST。

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

我建议您使用CSV分隔符,在;选择不同的分隔符POST;/path/to/resource;{"key":"value","key":"value","key":"value"} 并相应地添加CSV数据(删除额外的'字符):

False
  • 注意:允许引用的数据保持默认值 <!--Uncomment for logging ALL HTTP request and responses --> <!--<logger name="io.gatling.http.ahc" level="TRACE" />--> <!--<logger name="io.gatling.http.response" level="TRACE" />--> <!-- Uncomment for logging ONLY FAILED HTTP request and responses --> <!--<logger name="io.gatling.http.ahc" level="DEBUG" />--> <!--<logger name="io.gatling.http.response" level="DEBUG" />-->

答案 1 :(得分:-1)

删除&#34;&#39;&#34;在请求周围,它应该工作。

关于你得到的警告,这不是一个错误,只是在JMeter中这两个标签是独占的:

  • 参数选项卡用于输入格式为name = value

  • 的参数
  • 正文数据适合您的要求

那么您可以测试我的假设,即在CSV文件中删除请求周围的引用吗?

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