如何从excel获取数据到soapui请求

时间:2017-09-25 14:09:50

标签: groovy soapui

我已经编写了一个groovy脚本来从excel表中读取数据,这很好用。 现在我在excel中有两行。我希望row1转到request1,row2转到request2。

下面是我的常规脚本

import org.apache.poi.xssf.usermodel.*
import org.apache.poi.xssf.usermodel.XSSFWorkbook
def fs = new FileInputStream(“C:\\Users\\singh532\\Desktop\\try1.xlsx”)
def wb = new XSSFWorkbook(fs)
def ws = wb.getSheet(“Sheet1”)
def r = ws.getPhysicalNumberOfRows()

for(def i=0; i<r; i++)
{
    def row = ws.getRow(i)
    def c = row.getPhysicalNumberOfCells()

    for (def j=0;j<c;j++)
    {
        def cell = row.getCell(j)
        def d = cell.getStringCellValue()
        log.info d
    }
}

1 个答案:

答案 0 :(得分:1)

这只是为了提供一些如何完成的想法

我使用负载测试多次运行测试步骤(对于多行数据)

下面是测试套件的结构

测试步骤

    与我的CSV文件中的列数对应的
  • 属性(COL1,COL2,COL3,COL ...)
  • groovy脚本,用于从CSV文件加载数据,并将COL*属性值替换为与当前运行迭代对应的CSV行中的值。
 public static class Const{
     public static ArrayList data=new ArrayList();
     static{
         //load data file statically
         new File('./my-data.csv').splitEachLine(","){
             data.add(it);
         }
     }
 }

 //get current run number and calculate row of data from it
 int row=context.getProperty( 'TotalRunCount');
 if(row==null)row=0;
 row=row%Const.data.size();
 //substitute properties with ones from file
 for(int i=0; i<Const.data[row].size(); i++){
     context.setProperty('COL'+(i+1), Const.data[row][i] );
 }
  • 使用带有属性的表达式的服务调用步骤:
<a>
  <b>${=context.getProperty('COL1')}</b>
  <c>${=context.getProperty('COL2')}</c>
  ...
</a>
  

注意:数据文件中的行数应与负载测试中的总运行限制相对应。如果total runs大于文件中的行数,则会重复测试。

enter image description here