Java 通过Excel中的多个工作表输入Jmeter SOAP/XML-RPC请求

Java 通过Excel中的多个工作表输入Jmeter SOAP/XML-RPC请求,java,jmeter,apache-tika,Java,Jmeter,Apache Tika,我的问题: 我所有的测试数据都放在excel+多张表格中。我试图读取excel数据并将其作为用户定义的变量存储在Jmeter中。我计划用这个: 作为请求XML中的变量,我通过SOAP/XML-RPC请求发送 作为我收到的响应XML的断言变量 到目前为止我做了什么: 我使用了一个与中类似的示例 第一张表的testfile.xlsx文件的A1和B1单元格分别为“foo”和“bar” 我已经下载了tika-app-1.9.jar并添加到Jmeter(v2.13)的/lib文件夹中 添加了Bean

我的问题: 我所有的测试数据都放在excel+多张表格中。我试图读取excel数据并将其作为用户定义的变量存储在Jmeter中。我计划用这个:

  • 作为请求XML中的变量,我通过SOAP/XML-RPC请求发送
  • 作为我收到的响应XML的断言变量
到目前为止我做了什么: 我使用了一个与中类似的示例

  • 第一张表的testfile.xlsx文件的A1和B1单元格分别为“foo”和“bar”
  • 我已经下载了tika-app-1.9.jar并添加到Jmeter(v2.13)的/lib文件夹中
  • 添加了Beanshell预处理器&在脚本部分添加:

    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}

你知道这里有什么问题吗

对于采样器,您不能使用
sampler.addArgument()

如果将
a1Value
a2Value
存储到JMeter变量“foo”和“bar”中,如下所示:

选项包括:

比恩希尔路

sampler.setXmlData("<?xml version=\"1.0\"?>\n" +
        "\n" +
        "<maintag>\n" +
        "    <sometag foo=\"" + vars.get("foo") + "\"/>\n" +
        "    <someothertag bar=\"" + vars.get("bar") + "\"/>\n" +
        "\n" +
        "</maintag>");
sampler.setXmlData(“\n”+
“\n”+
“\n”+
“\n”+
“\n”+
“\n”+
"");
GUI方式

sampler.setXmlData("<?xml version=\"1.0\"?>\n" +
        "\n" +
        "<maintag>\n" +
        "    <sometag foo=\"" + vars.get("foo") + "\"/>\n" +
        "    <someothertag bar=\"" + vars.get("bar") + "\"/>\n" +
        "\n" +
        "</maintag>");
直接将变量注入SOAP/XML-RPC采样器代码,如

关于此行中的多张图纸:

  • XSSFSheet sheet=workbook.getSheetAt(0)将返回第一张工作表
  • XSSFSheet sheet=workbook.getSheetAt(1)将返回第二页
  • xssfheet sheet=workbook.getSheetAt(“MySheet”)将返回名为“MySheet”的工作表
有关如何在JMeter中使用外部二进制文件的更多详细信息,请参阅指南