繁体   English   中英

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

[英]Send new data for each HTTP Request in Apache JMeter

我有一个包含正文数据的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(每个请求一个)

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

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

使用以下采样器将“仅控制器”添加到您的测试计划中,以初始化读取的文件

-> 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采样器

-> Beanshell预处理器

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

然后将您的请求正文替换为http sampler

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

您不需要任何脚本,只需使用__StringFromFile()函数即可:

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

有关此和其他JMeter函数的更多信息,请参见如何使用JMeter函数帖子系列。

如果文件的列数> 1,则使用CSV数据集配置可能更可行。

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

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

推荐的选项是1和3

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

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

    }

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采样器”作为子代,并在http采样器中调用随机变量名称(是UUID) 在此处输入图片说明
 { "voice": "Nancy", "basic": "sad", "type": "basic", "text":"perf text ${__javaScript((new Date().getTime()))}_${UUID}@c1.dev" } 

对于源,请单击此处在此处输入链接描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM