написать все вводимые данные пользователей в файл csv в jmeter beanshell PostProcessor с не повторяющимися пользователями? - PullRequest
1 голос
/ 11 июля 2020

Когда я использую набор данных CSV для входных данных во время нагрузочного тестирования с группой потоков в качестве 10 пользователей для создания сценария учетной записи, я хочу сохранить данные всех пользователей, которые создали там учетные записи, снова в другом CSV-файле. но каждая группа потоков всегда перезаписывает файл, и я получаю файл, содержащий одни и те же данные, повторяющиеся 10 раз построчно.

это мой код в сценарии BeanShell PostProcessor:

import java.io.*;
import java.util.Arrays;
import java.io.Writer;
import java.util.List;
File f=new File("C:\\apache-jmeter-5.3\\apache-jmeter-5.3\\bin\\CSVfiles\\test1.csv");
FileWriter fw=new FileWriter(f);
BufferedWriter bw=new BufferedWriter(fw);


int threadnum=ctx.getThreadNum();

 for (int i =-1; i < threadnum; i++)
   {
    
String searchAddr = vars.get("firstname");

    
String searchAddr2 = vars.get("lastname");


bw.write(searchAddr);
bw.write(",");
bw.write(searchAddr2);
bw.write("\n");

   }
bw.close();
fw.close();

это содержимое файла csv после теста:

firstname3, lastname3
firstname3, lastname3
firstname3, lastname3

я хочу:

firstname1, lastname1
firstname2, lastname2
firstname3, lastname3

вы можете помочь мне с кодом, чтобы я мог получить неповторяющиеся данные?

1 Ответ

0 голосов
/ 13 июля 2020

Если все ваши 10 виртуальных пользователей пишут одни и те же данные, я ожидаю, что вы можете изменить свой код, чтобы записать данные только для одного пользователя, то есть первого, например:

File f = new File("C:\\apache-jmeter-5.3\\apache-jmeter-5.3\\bin\\CSVfiles\\test1.csv");
FileWriter fw = new FileWriter(f);
BufferedWriter bw = new BufferedWriter(fw);


int threadnum = ctx.getThreadNum();
if (threadnum == 0) { // write data to file only for the first user

    for (int i = -1; i < threadnum; i++) {

        String searchAddr = vars.get("firstname");


        String searchAddr2 = vars.get("lastname");


        bw.write(searchAddr);
        bw.write(",");
        bw.write(searchAddr2);
        bw.write("\n");

    }
}
bw.close();
fw.close();

Еще пара советы:

  1. Начиная с JMeter 3.1 вы должны использовать JSR223 Test Elements и Groovy язык для написания сценариев , вы даже можете повторно использовать тот же код, он будет работают намного быстрее
  2. Если вы будете записывать данные в один и тот же файл с> 1 пользователем за раз, вы столкнетесь с гонкой , что приведет к повреждению данных, в дальнейшем рассмотрите возможность использования Гибкая программа записи файлов для этих целей
...