【问题标题】:How to set the $(_threadNum) in a http request post body data using jmeter?如何使用 jmeter 在 http 请求发布正文数据中设置 $(_threadNum)?
【发布时间】:2016-01-28 17:53:47
【问题描述】:

我是 Jmeter 的新手。我正在尝试通过设置多个线程,使用步进线程组来测试我的应用程序的功能。我以某种方式设法创建了像 sample-1、sample-2 等这样的文件夹,其中 1,2.. 是线程数。其中一个 HTTP 请求需要将文件路径作为 json 参数的正文数据。是有什么方法可以访问帖子正文数据中的 threadNum 函数,或者我可以更改每个线程的文件路径参数而无需手动更改的任何其他方式?

我的身体数据如下: [{"filePath":"sample-1/file-1.txt", "id":123},{"filePath":"sample-2/file-2.txt", "id":124}.. ..}]

【问题讨论】:

  • 向我们展示您的尝试

标签: multithreading post jmeter httprequest


【解决方案1】:

您可以直接在请求中执行此操作,也可以将其设置为计划中的前处理器或后处理器中的变量。

[{"filePath":"sample-${__threadNum}/file-${__threadNum}.txt", "id":123},{"filePath":"sample-${__javaScript(${threadNum}+1)}/file-${__javaScript(${threadNum}+1)}.txt", "id":124}....}]

这也有效:

[{"filePath":"sample-${__BeanShell(ctx.getThreadNum())}/file-${__BeanShell(ctx.getThreadNum())}.txt", "id":123},{"filePath":"sample-${__BeanShell(ctx.getThreadNum()+1)}/file-${__BeanShell(ctx.getThreadNum()+1)}.txt", "id":124}....}]

这样做虽然您最好在测试计划开始时将线程号存储在一个变量中,然后像调用任何其他 jMeter 变量一样调用它。

在上一个请求的后处理器中,您会执行以下操作:

var threadNum = ctx.getThreadNum()
var path = 'sample-'+threadNum+'/file-'+threadNum+'.txt'
vars.put('path', path)
vars.put('threadID', threadNum.toString()) 

请记住,getThreadNum() 是基于 0 的,而 ${threadNum} 是基于 1 的。

【讨论】:

  • 我已经使用 getThreadNum() 在 Bean Shell Sampler 中创建这些文件夹,效果很好。而 [{"filePath":"sample-${_threadNum}... 正在抛出 400(错误请求)。
  • 你需要 2 个 '_' 继续 'threadNum',看起来你只有一个。代替 ${__threadNum},您还可以直接在正文中使用 ${__BeanShell(ctx.getThreadNum())} 和 ${__BeanShell(ctx.getThreadNum()+1)},我已经编辑了答案以显示代码。
猜你喜欢
  • 1970-01-01
  • 2014-08-08
  • 2018-08-31
  • 1970-01-01
  • 2013-11-30
  • 1970-01-01
  • 2016-11-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多