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

时间:2015-07-20 13:01:47

标签: java jmeter apache-tika

我的问题: 我在excel +多张表中包含了所有测试数据。我正在尝试阅读excel数据&将其存储为Jmeter中的用户定义变量。我打算用这个:

  • 作为Request XML中的变量,我通过SOAP / XML-RPC Request
  • 发送
  • 作为我收到的Response XML的断言变量。

到目前为止我做了什么: 我使用的是Jmeter : upload excel, hard coded values

中的类似示例
  • 第一张工作表的testfile.xlsx文件的A1和B1单元格为" foo"和" bar"
  • 我已经下载了tika-app-1.9.jar&添加到Jmeter(v2.13)的/ lib文件夹中
  • 添加了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}。

关于这里可能出现什么问题的任何想法?

1 个答案:

答案 0 :(得分:0)

如果是SOAP/XML-RPC Request采样器,则无法使用sampler.addArgument()

如果将a1Valuea2Value存储到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代码,如

SOAP 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指南。