在Jmeter中,HTTP Request Sampler的Body Data部分中的参数语法是什么,Rest API和输入应该是动态生成的

时间:2017-03-02 07:24:05

标签: jmeter

我正在尝试使用BSF PreProcessor通过JavaScript生成输入。目前我只有BSF PrepProcessor和HTTP请求。我的请求主体是这样的。

{
    "entity": {
        "id": "${EnitityName}",
        ----
     }
}

随机生成的字符串应该是ID的值,我已经参数化了我们如何正常地执行它。这不起作用。有人可以告诉我我哪里出错或任何替代方法。

2 个答案:

答案 0 :(得分:1)

尝试使用__RandomString函数:(如果你想要一个随机字符串,则不需要JavaScript & BSF PreProcessor

{
    "entity": {
        "id": "${__RandomString(8,abcdefghiz,)}",
        ----
     }
}

来自文档:

示例:

  

$ {__ RandomString(5)} 将返回一个包含5个字符的随机字符串   是否可读

     

$ {__ RandomString(10,abcdefg)} 将返回   从abcdefg集中挑选的10个字符的随机字符串,如   cdbgdbeebd或adbfeggfad,...

     

$ {__ RandomString(6,a12zeczclk,MYVAR)}   将返回从a12zeczclk集中挑选的6个字符的随机字符串   并将结果存储在MYVAR中,MYVAR将包含类似2z22ak的字符串   或者z11kce,......

答案 1 :(得分:0)

在BSF PreProcessor脚本中正确设置了${EnitityName}变量,它应该被生成的值替换,给定BSF预处理器成功

我建议检查 jmeter.log 文件是否有任何错误 - 它应该让你知道出了什么问题。您还可以共享您的BSF预处理器代码,以便其他人和我自己可以查看并建议修复。

实际上根据JMeter Best Practices建议使用JSR223 Elements,因此您应该切换到JSR223 PreProcessorGroovy language,这是一个生成10个字符的随机字母数字字符串的示例代码并将值放入${EntityName} JMeter变量中,如下所示:

vars.put("EnitityName",org.apache.commons.lang3.RandomStringUtils.randomAlphanumeric(10))

参考文献: