我的问题: 我在excel +多张表中包含了所有测试数据。我正在尝试阅读excel数据&将其存储为Jmeter中的用户定义变量。我打算用这个:
到目前为止我做了什么: 我使用的是Jmeter : upload excel, hard coded values
中的类似示例添加了Beanshell PreProcessor&在脚本部分添加:
import org.apache.jmeter.protocol.http.sampler.WebServiceSampler;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.File;
import java.io.FileInputStream;
FileInputStream excelFile = new FileInputStream(new File("/path/to/excel/testfile.xlsx"));
XSSFWorkbook workbook = new XSSFWorkbook(excelFile);
XSSFSheet sheet = workbook.getSheetAt(0);
XSSFRow row = sheet.getRow(0);
Cell a1 = row.getCell(0);
String a1Value = a1.getStringCellValue();
Cell a2 = row.getCell(1);
String a2Value = a2.getStringCellValue();
excelFile.close();
sampler.addArgument("foo",a1Value);
sampler.addArgument("bar",a2Value);
当我在SOAP / XML-RPC请求中使用变量$ {foo}时,该值不会被值替换,而是保留为$ {foo}。
关于这里可能出现什么问题的任何想法?
答案 0 :(得分:0)
如果是SOAP/XML-RPC Request采样器,则无法使用sampler.addArgument()
。
如果将a1Value
和a2Value
存储到JMeter变量" foo"和" bar"为:
vars.put("foo", a1Value);
vars.put("bar", a2Value);
选项包括:
Beanshell Way
sampler.setXmlData("<?xml version=\"1.0\"?>\n" +
"\n" +
"<maintag>\n" +
" <sometag foo=\"" + vars.get("foo") + "\"/>\n" +
" <someothertag bar=\"" + vars.get("bar") + "\"/>\n" +
"\n" +
"</maintag>");
GUI方式
直接将变量注入SOAP / XML-RPC Sampler代码,如
关于多行此表:
XSSFSheet sheet = workbook.getSheetAt(0);
将返回第一张表XSSFSheet sheet = workbook.getSheetAt(1);
将返回第二张XSSFSheet sheet = workbook.getSheetAt("MySheet");
将返回名为&#34; MySheet&#34; 有关如何在JMeter中使用外部二进制文件的更多详细信息,请参阅How to Extract Data From Files With JMeter指南。