在Apache JMeter中为每个HTTP请求发送新数据

时间:2017-02-02 17:15:20

标签: apache http scripting jmeter httprequest

我有一个包含正文数据的HTTP采样器:

{
"voice": "Nancy",
"basic": "sad",
"type": "basic",
"text": "She fell."
}

我将线程数设置为50,并将周期增加到10秒。 我有一组需要在“文本”字段中填写的句子。

She had your dark suit in greasy washwater all year.
Don't ask me to carry an oily rag like that.
This was easy for me.
Jane may earn more money by working hard.
She is thinner than I am.
Bright sunshine shimmers on the ocean.
......... another 42 sentences 
  总共:50(每个请求一个)

那是一个新请求被触发的时候,我需要一个新的句子在“text”字段中。

如何处理这种情况是使用BeanShell脚本还是uuid ??

4 个答案:

答案 0 :(得分:0)

添加"仅限一次控制器"使用以下采样器来测试计划以初始化文件读取

- > Beanshell采样器1

import org.apache.jmeter.services.FileServer; 
//String sCWd = new String(FileServer.getFileServer().getBaseDir().replace("\\\\", "/"));
String sCWd = new String(FileServer.getFileServer().getBaseDir());
log.info("CWDString=" + sCWd.replace("\\", "/"));

vars.put("CWD", sCWd.replace("\\\\", "/"));
log.info("CWD=" + vars.get("CWD"));

- > Beanshell采样器2

${__CSVRead(${CWD}/<<yourfilename.csv>>,*hMyText)}
${__CSVRead(*hMyText,next)}

然后在您的主HTTP请求采样器下,添加一个beanshell预处理器

HTTP采样器

- &GT; Beanshell预处理器

vars.put("mynewtext", "${__CSVRead(*hMyText,0)}");

然后将您的请求正文替换为http采样器

{
"voice": "Nancy",
"basic": "sad",
"type": "basic",
"text": "${mynewtext}"
}

答案 1 :(得分:0)

您不需要任何脚本,只需转到__StringFromFile()功能,如:

{
  "voice": "Nancy",
  "basic": "sad",
  "type": "basic",
  "text": "${__StringFromFile(/path/to/file/with/text.txt,,,)}"
}

有关此功能和其他JMeter功能的更多信息,请参阅How to Use JMeter Functions帖子系列。

如果您的文件有&gt; 1列,使用CSV Data Set Config可能更可行。

答案 2 :(得分:0)

另一种简单的方法是使用Config Element-&gt;“CSV Data Set Config”。 将所有50个句子放在文本文件中的任何路径中,如D:/myfile.txt 现在在CSV数据集配置中,设置文件名即完整位置,将变量名称定义为“myvalue”,并在请求参数中将参数作为$ {myvalue}传递。

答案 3 :(得分:0)

我们可以通过多种方式解决这个问题,下面是两种方式   1.使用“__RandomString()”   2.使用BeanShell程序   3.使用“随机变量”和纪元时间(配置元素 - >随机变量)

推荐选项为1和3

  1. “使用”__RandomString()“:以下是代码段

    {
      "voice": "Nancy",
      "basic": "sad",
      "type": "basic",
    "text":"${__RandomString(32,abcdefghijklmnopqrstvuwxyz,0123456789)}",
    

    }

  2. 2。使用BeanShell程序:下面是使用beanshell预处理器

    的代码片段
    Step 1: Add "Beanshell preprocessor" to "Http" sampler as child
    
    import java.util.Random;
      String str="abcdefghijklmnopqrst1234567890";
      int String_Length=32;
      String randomSting="";
      for(int i=1;i<=String_Length;i++){
       Random randomVal=new Random();
       int randomInt=randomVal.nextInt(str.length());
       randomSting+=str.substring(randomInt, randomInt+1);
       }     
    vars.put("random_variable",randomSting);
    

    步骤2:在“Http Sampler”中调用random_variable(在beanshell预处理器中定义),如下所示

    {
      "voice": "Nancy",
      "basic": "sad",
      "type": "basic",
      "text":"${random_variable}"
      }
    
    1. 将“随机变量”作为子项添加到“http sampler”并在http sampler中调用ramdom变量名称(是UUID) enter image description here
    2. {
        "voice": "Nancy",
        "basic": "sad",
        "type": "basic",
         "text":"perf text ${__javaScript((new Date().getTime()))}_${UUID}@c1.dev"
      }
      

      有关来源,请点击此处enter link description here