当前位置: 首页 > 知识库问答 >
问题:

如何随机化JMETER中文本之间有空格的数据行

宇文飞翮
2023-03-14

CSV文件中的示例数据如下:

firstname,lastname,housenumber,streetname,area,postcode
john,smith,21,Albert Street,Knotts County,AB3 4DL

我在beanshell中使用的代码是加载csv文件的第1部分:

Scanner scanner = new Scanner(new File("c:/file.csv")); 
Map file = new HashMap(); 
int counter = 0; 
while (scanner.hasNext()) { 
  String line = scanner.next(); 
  file.put(counter, line); 
  counter++; 
} 
bsh.shared.fileMap = file; 
bsh.shared.linesnumber = counter;

后处理器中beanshell脚本的第二部分从文件中获取随机行并添加到变量“line”中:

int counter = bsh.shared.linesnumber; 
Map file = bsh.shared.fileMap; 

Random r = new Random(); 
String line = file.get(r.nextInt(counter)); 
vars.put("line", line);
line=john,smith,21,Albert

共有1个答案

仉臻
2023-03-14

首先,我认为测试需要是可重复的,所以万一测试发现了错误,您可以重新运行测试来确认它或验证潜在的问题已经修复。所以我建议保持CSV数据的“正常”顺序。行为良好的测试会自行清理,因此您不会遇到数据无法重用的情况。

如果您仍然在寻找随机化数据的方法,您可以尝试HTTP简单表服务器插件,它具有返回行的“随机”模式。

如果您仍然需要Beanshell,请记住,JMeter构建在其他库的顶部,您可以从Beanshell脚本调用它们的方法。特别是在您的情况下,我相信fileutils.readlines()将非常有用,例如:

>

  • 第一个Beanshell脚本:

    import org.apache.commons.io.FileUtils;
    
    List lines = FileUtils.readLines(new File("c:/file.csv"));
    bsh.shared.lines = lines;
    

    第二个Beanshell脚本:

    import java.util.concurrent.ThreadLocalRandom;
    
    List lines = bsh.shared.lines;
    String line = lines.get(ThreadLocalRandom.current().nextInt(0, lines.size()));
    vars.put("line", line);
    

    更多信息:如何使用BeanShell:JMeter最喜爱的内置组件

  •  类似资料:
    • 我试图生成8个范围内的随机数,例如1到100。我生成的很好,但我需要生成随机数,所有生成的随机数和最小-最大范围值之间的特定差异被排除。假设在1到100中,我必须生成2,12,22,32,42,52,62,72的数字。不管怎样,我都可以生成这样的随机数。 提前谢谢。

    • 问题内容: 我有一个像这样的数组: 如何将其随机/随机播放? 问题答案: 实际无偏混洗算法是Fisher-Yates(aka Knuth)。

    • 我试图通过保持行之间的一致性来随机化我的行,但会混淆行的顺序,从而随机化从属变量。我有以下数据帧: 并将行随机化: 然后执行重置索引,如 期望输出:

    • 问题内容: 我想在两个小十进制数字之间获取一个随机数。 在0.8到1.3之间。 要么 谢谢! 问题答案: 斯威夫特5: 使用random(in :) 返回指定范围内的随机值: 每个苹果: random()静态方法从范围内的连续均匀分布中选择一个随机值,然后将该值转换为该类型中最接近的可表示值。 请参阅random(in:using:)以指定默认值以外的随机生成器。

    • 问题内容: 因此,我在此代码位中的目标是随机掷两个骰子,众所周知,您的普通骰子只有6个面,因此我导入了Foundation以访问arc4random_uniform(UInt32)。我尝试使用(1..7)的范围来避免随机获得0,但是返回了一个我不太喜欢的错误。我试图这样做: 但是那又回来了 找不到接受提供的参数的’init’的重载 我希望这是足够的信息,可以为您提供帮助,帮助您:) 请注意,我只是

    • 我想看看哪个随机数生成器包在我的神经网络中更快。 我目前正在更改github的一个代码,其中两个都是numpy。随机和随机包用于生成随机整数、随机选择、随机样本等。 我之所以更改此代码,是因为出于研究目的,我希望设置一个全局种子,以便能够比较超参数不同设置的精度性能。问题是,现在我必须为随机包和numpy包设置两个全局种子。理想情况下,我只想设置一个种子,因为来自两个随机数生成器序列的图形可能会更