使用groovy脚本创建数据源循环

时间:2013-09-13 13:18:16

标签: groovy soapui

我正在尝试在SOAP UI 4.5(没有专业版)中为我的项目创建回归测试套件。我创建了groovy脚本来从excel表中读取请求数据。我面临的问题是我无法在循环中运行测试用例。执行groovy脚本后出现的测试用例仅取最后一个值。我希望每次迭代都运行测试用例(SOAP UI pro中的功能是使用数据源循环实现的)。请提出一些解决方案。我是groovy脚本的新手。这是我迄今为止创建的groovy脚本:

import org.apache.poi.hssf.*;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;

InputStream inp = new FileInputStream("workbook.xls");
POIFSFileSystem fs = new POIFSFileSystem(inp);
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
for (HSSFRow row : sheet) {

    def rownum = row.getRowNum();
    log.info rownum;
    def value1 = row.getCell(0).getStringCellValue();
    def value2 = row.getCell(1).getStringCellValue();
    log.info value1;
    log.info value2;
    context.setProperty("companyid",value1)
companyid = context.expand('${companyid}')
context.setProperty("operation",value2)
operation = context.expand('${operation}')
    }

1 个答案:

答案 0 :(得分:0)

soapUI中的执行是顺序的,在你的情况下发生的是执行groovy代码然后soapUI执行下一步,因为那时你的代码已经遍历了excel中的所有行和属性中的数据来自excel的最后一行,这就是使用excel的最后一行数据执行下一步的原因。

当您使用groovy控制流程时,您的测试执行,即,这个groovy脚本是您的驱动程序。在这种情况下,您还需要包含代码来调用属于回归脚本的所有步骤,请尝试以下代码soapUI forum

import com.eviware.soapui.model.testsuite.TestStepResult.TestStepStatus

def testStep = .. create your teststep.. 

def result = testStep.run( testRunner, context )
if( result.status == TestStepStatus.OK )
{
...
}
else
{ 
...
}

你需要记住的另一件事是,一旦soapUI完成执行这个groovy脚本,因此你的回归将转移到同一个测试用例中的下一步,因为它们已经被执行了你想要避免的groovy步骤你的常规步骤。要做到这一点,我可以建议两件事。

  1. 禁用groovy步骤以外的所有步骤。 soapUI将跳过禁用的步骤。 [链接禁用测试步骤](http://www.soapui.org/forum/viewtopic.php?t=126
  2. 第二个,可能是我的首选,将你要在你的groovy代码中调用的所有步骤移到一个单独的测试用例/测试套件中。
  3. 希望这有帮助!