【问题标题】:Input to Jmeter SOAP/XML-RPC Request via multiple sheets in Excel通过 Excel 中的多个工作表输入 Jmeter SOAP/XML-RPC 请求
【发布时间】:2015-07-20 22:39:00
【问题描述】:

我的问题: 我的所有测试数据都在一个 excel + 多个工作表中。我正在尝试读取 excel 数据并将其存储为 Jmeter 中的用户定义变量。我打算用这个:

  • 作为请求 XML 中的变量,我通过 SOAP/XML-RPC 请求发送
  • 作为我收到的响应 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}。

您知道这里可能存在什么问题吗?

【问题讨论】:

    标签: java jmeter apache-tika


    【解决方案1】:

    如果是SOAP/XML-RPC Request 采样器,您不能使用sampler.addArgument()

    如果您将a1Valuea2Value 存储到JMeter 变量“foo”和“bar”中:

    vars.put("foo", a1Value);
    vars.put("bar", a2Value);
    

    选项是:

    豆壳方式

    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"); 将返回名为“MySheet”的工作表

    有关如何在 JMeter 中使用外部二进制文件的更多详细信息,请参阅 How to Extract Data From Files With JMeter 指南。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-05
      • 1970-01-01
      • 1970-01-01
      • 2013-10-03
      • 1970-01-01
      相关资源
      最近更新 更多