我正在尝试在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}')
}
答案 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步骤你的常规步骤。要做到这一点,我可以建议两件事。
希望这有帮助!