24

我正在尝试生成一个 jmeter 脚本,其中每次运行脚本时都会创建一个唯一文件夹 - 将某种变量添加到文件夹名称中,例如用户名+时间戳,应该足以保证唯一性。但是,jmeter 没有将变量解析为其值 - 尽管这是从 csv 文件中读取变量时(这不合适)。

基本上,我是在http请求中编辑PostBody,如下:

 {"alf_destination":"workspace://SpacesStore/90368635-78a1-4dc5-be9e-33458f09c3f6","prop_cm_name":"Test
 Folder - ${variable}","prop_cm_title":"Test
 Folder","prop_cm_description":"Test Folder"}

variable到目前为止,我尝试过的任何变量(例如随机字符串、时间戳等)基本上在哪里?

谁能建议如何解决变量?

4

4 回答 4

32

您可以使用 jmeter(从 2.9 版本开始)uuid 功能 -> http://jmeter.apache.org/usermanual/functions.html#__UUID

${__UUID}

1)如果您只想要整个测试的 1 个值,请将“用户定义的变量”配置元素添加到您的测试中。这将在您第一次加载测试脚本时进行评估。

2)如果您想更改每个线程执行的值,但在每个线程实例期间保持不变:在您的“线程组”下,将“预处理器 - >用户参数”添加到您的线程组 - 并添加变量那里。

此外,如果您希望在每次线程重新启动时更改值(线程组中脚本的每次“迭代”),您可以选中用户参数上的“每次迭代更新一次”框 - 它会得到一个每次在测试脚本(在该线程组内)开始时重新启动线程时都会产生新值。

http://mail-archives.apache.org/mod_mbox/jmeter-user/201208.mbox/%3C004301cd853e$0c4a60c0$24df2240$@gmail.com%3E

于 2013-09-05T11:51:01.583 回答
19

使用 JMeter 2.9,以下工作:

在 HTTP Request Sampler 中,选项卡“Post Body”添加例如您的 JSON 数据并在其中包含变量:

{"uuid":"${new-uuid}"}

new-uuid是用户定义的变量。这将发送(从查看结果树,选项卡“请求”/“原始”):

POST data:
{"uuid":"a1b2c3d4e5f6"}
于 2013-07-15T14:23:43.470 回答
5

我通过在 http 请求帖子正文中引用一个变量来做到这一点${formvalues}——使用附加到 http 请求采样器的 beanshell 预处理器创建。
豆壳内容:

double random = Math.random();    
String formvalues ="{\"alf_destination\":\"workspace://SpacesStore/90368635-78a1-4dc5-be9e-33458f09c3f6\",\"prop_cm_name\":\"Test Folder - ${uname}_" + random + "\",\"prop_cm_title\":\"Test Folder\",\"prop_cm_description\":\"Test Folder\"}";         
vars.put("formvalues",formvalues);

因此,这将创建一个包含用户名 ( ${uname},取自 csv ) 加上一个随机数的文件夹 - 这很粗糙,因为可能仍然存在脚本尝试创建与现有文件夹同名的文件夹的情况,但它会起作用对于我的情况。

于 2013-04-03T09:53:15.657 回答
3

假设您在 jmeter 变量“Location”中有值“NewYork”。

在 HTTP POST BODY DATA 中像这样使用它:

{location:"${Location}"}=> 这被解释为{location:"NewYork"}

于 2020-04-23T10:23:52.833 回答