如何使用 jmeter 在 http 请求 post body 数据中设置 $(_threadNum)?
How to set the $(_threadNum) in a http request post body data using jmeter?
我是 Jmeter 的新手。我正在尝试通过使用步进线程组设置多个线程来测试我的应用程序的功能。我以某种方式设法创建了 sample-1、sample-2 等文件夹,其中 1,2.. 是 HTTP 请求的 threads.One 的数量需要具有文件路径的 body 数据作为 json parameter.Is 有任何方法可以访问 post body 数据中的 threadNum 函数或任何其他我可以在不更改的情况下更改每个线程的文件路径参数的方法手动吗?
我的 body 数据如下:
[{"filePath":"sample-1/file-1.txt", "id":123},{"filePath":"sample-2/file-2.txt", "id":124}....}]
您可以直接在请求中执行,也可以在计划中的预处理器或 post 处理器中将其设置为变量。
[{"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 变量一样调用它。
在 post 处理器中,在先前的请求中,您会执行如下操作:
var threadNum = ctx.getThreadNum()
var path = 'sample-'+threadNum+'/file-'+threadNum+'.txt'
vars.put('path', path)
vars.put('threadID', threadNum.toString())
请记住,getThreadNum() 是基于 0 的,而 ${threadNum} 是基于 1 的。
我是 Jmeter 的新手。我正在尝试通过使用步进线程组设置多个线程来测试我的应用程序的功能。我以某种方式设法创建了 sample-1、sample-2 等文件夹,其中 1,2.. 是 HTTP 请求的 threads.One 的数量需要具有文件路径的 body 数据作为 json parameter.Is 有任何方法可以访问 post body 数据中的 threadNum 函数或任何其他我可以在不更改的情况下更改每个线程的文件路径参数的方法手动吗?
我的 body 数据如下: [{"filePath":"sample-1/file-1.txt", "id":123},{"filePath":"sample-2/file-2.txt", "id":124}....}]
您可以直接在请求中执行,也可以在计划中的预处理器或 post 处理器中将其设置为变量。
[{"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 变量一样调用它。
在 post 处理器中,在先前的请求中,您会执行如下操作:
var threadNum = ctx.getThreadNum()
var path = 'sample-'+threadNum+'/file-'+threadNum+'.txt'
vars.put('path', path)
vars.put('threadID', threadNum.toString())
请记住,getThreadNum() 是基于 0 的,而 ${threadNum} 是基于 1 的。