Создание XSSFWorkbook() из семплера JSR233 — Jmeter
Я могу создать XSSFWorkbook() только в первой итерации. Во второй итерации JSR233 Sampler проходит, но рабочая книга не создается.
Рабочая книга wb = новая XSSFWorkbook();
Лист лист = wb.createSheet("SiteList"); Создайте строку и поместите в нее несколько ячеек. Строки основаны на 0. Строка строка = лист.createRow(0);
Создайте ячейку и поместите в нее значение. row.createCell(0).setCellValue('ErtStudyName');row.createCell(1).setCellValue('UniqueSiteID');row.createCell(2).setCellValue('SiteNumber');row.createCell(3).setCellValue('InvestigatorFirstName');row.createCell(4).setCellValue('InvestigatorLastName');row.createCell(5).setCellValue('InvestigatorMiddleName');row.createCell(6).setCellValue('ShippingAddress1');row.createCell(7).setCellValue('ShippingAddress2');row.createCell(8).setCellValue('ShippingAddress3');row.createCell(9).setCellValue('ShippingAddress4');row.createCell(10).setCellValue('InstitutionName'); row.createCell(11).setCellValue('Город'); row.createCell(12).setCellValue('Почтовый индекс'); row.createCell(13).setCellValue('Страна'); row.createCell(14).setCellValue('Регион'); row.createCell(15).setCellValue('ShippingPhone');row.createCell(16).setCellValue('ShippingPhoneExtension');row.createCell(17).setCellValue('ShippingFax');row.createCell(18).setCellValue('SiteAction');
строка = лист.createRow(1);row.createCell(0).setCellValue('${studyname}');row.createCell(1).setCellValue('Uniques_${id2}');row.createCell(2).setCellValue('${id2}');row.createCell(3).setCellValue('InvestigatorFirstName1');row.createCell(4).setCellValue('LAstName1');//row.createCell(5).setCellValue('InvestigatorMiddleName');--row.createCell(6).setCellValue('adrres1');row.createCell(7).setCellValue('adrres2');//row.createCell(8).setCellValue('ShippingAddress3');//row.createCell(9).setCellValue('ShippingAddress4');row.createCell(10).setCellValue('Учреждение'); row.createCell(11).setCellValue('Нью-Йорк'); row.createCell(12).setCellValue(32133);row.createCell(13).setCellValue('Индия'); row.createCell(14).setCellValue('NYC');row.createCell(15).setCellValue('312312312');row.createCell(16).setCellValue('312312312');//row.createCell(17).setCellValue('ShippingFax');row.createCell(18).setCellValue('Создать');
Записать вывод в файл
попробуйте (OutputStream fileOut = new FileOutputStream("C:/Users/saurabh.arora/Desktop/Performance/SiteService/SiteUpload/testdata/mainint/workbook${__threadNum}${__iterationNum}.xlsx")) { wb.write(fileOut) ); }
создать новую книгу в новой итерации
1 ответ
Это ваша проблема:
${__threadNum}${__iterationNum}
Согласно документации JSR223 Sampler :
В тестовых элементах JSR223 есть функция (компиляция), которая позволяет существенно повысить производительность. Чтобы воспользоваться этой функцией:
- Используйте файлы сценариев вместо их встраивания. Это заставит JMeter скомпилировать их, если эта функция доступна в ScriptEngine, и кэшировать их.
- Или используйте текст сценария и проверьте свойство «Кэшировать скомпилированный сценарий», если оно доступно.
При использовании этой функции убедитесь, что ваш код скрипта не использует переменные JMeter или вызовы функций JMeter непосредственно в коде скрипта, поскольку при кэшировании будет кэшироваться только первая замена. Вместо этого используйте параметры сценария.
Ваш код работает нормально, но вторая итерация просто перезаписывает файл, созданный на первой итерации, поскольку функции были преобразованы в значения, скомпилированы и кэшированы.
Итак, замените:
-
${__threadNum}
сctx.getThreadNum()
-
${__iterationNum}
сvars.getIteration()
Где:
-
vars
означает JMeterVariables -
ctx
означает JMeterContext
Дополнительная информация о вышеизложенном и других сокращениях API JMeter, доступных для тестовых элементов JSR223: 8 лучших классов Java JMeter, которые следует использовать с Groovy