0

我正在尝试在 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}')
    }
4

1 回答 1

0

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

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

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 步骤相同的测试用例中的下一步,因为它们已经在您的groovy 步骤中执行. 为此,我可以提出两件事。

  1. 禁用除常规步骤之外的所有步骤。soapUI 将跳过禁用的步骤。[禁用测试步骤的链接] ( http://www.soapui.org/forum/viewtopic.php?t=126 )
  2. 其次,可能是我最喜欢的,将您将在 groovy 代码中调用的所有步骤移至单独的测试用例/测试套件。

希望这可以帮助!

于 2013-09-13T14:03:55.867 回答