http请求帖子正文中的变量

时间:2013-04-02 18:55:38

标签: jmeter

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

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

  

{ “alf_destination”: “工作区:// SpacesStore / 90368635-78a1-4dc5-be9e-33458f09c3f6”, “prop_cm_name”:“测试   文件夹 - $ {variable}“,”prop_cm_title“:”测试   文件夹“,”prop_cm_description“:”测试文件夹“}

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

有人可以建议如何解决变量吗?

4 个答案:

答案 0 :(得分:24)

您可以使用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

答案 1 :(得分:12)

使用JMeter 2.9,以下工作:

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

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

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

POST data:
{"uuid":"a1b2c3d4e5f6"}

答案 2 :(得分:5)

我是通过引用http请求帖子中的变量 - ${formvalues}来实现的 - 使用附加到http请求采样器的beanshell预处理器创建。
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)以及一个随机数字 - 它的原始文件可能仍然存在脚本尝试创建文件夹的情况与现有名称相同,但它适用于我的情况。

答案 3 :(得分:1)

假设jmeter变量“ Location”中的值为“ NewYork”。

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

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