如何在SoapUI中从Excel电子表格运行多个SOAP请求?



我有一个电子表格,其中每行都包含一个 SOAP 请求,该请求由该行中的数据连接而成。因此,单元 G2 是 SOAP 请求,单元 G3 是不同的 SOAP 请求,单元 G4 是另一个 SOAP 请求,依此类推。我已经研究了将这 100+ SOAP 请求传输到 SoapUI(免费版本(并在一个批次中运行它们的最佳方法是什么。我还没有找到任何能给我完整的工作解决方案的东西。有人可以建议最好的方法吗?提前感谢!

我不会告诉你怎么做,但我可以告诉你我是怎么做到的。在 Excel 中连接 XML 是混乱且容易出错的,特别是如果您有技术水平较低的人员编写测试用例。我要求在Excel中输入数据(参数(。

我编写了一个获取数据的 Groovy 脚本(有一个很好的脚本可以为您抽象它(,并为每个测试用例将值保存为属性:

new ExcelBuilder("data/MyRegressionSheetV1.2.xls").eachLine([labels:true]) { row ->
Map payLoad = [:]
if (cell(0)) {
payLoad['MyName'] = cell(0)
payLoad['MySurname'] = cell(1)
//and so on
payLoad['ExpectedResult'] = cell(12)

testRunner.testCase.testSuite.project.setPropertyValue("Name", payLoad['MyName'])
testRunner.testCase.testSuite.project.setPropertyValue("Surname", payLoad['MySurname'])
//and so on
def MyScenario = testRunner.testCase.testSuite.testCases["SOAP Request1"].run( null, true )

然后使用参数化值发出 SOAP 请求:

<parm:Name>${#Project#Name}</parm:Name>
<parm:Surname>${#Project#Surname}</parm:Surname>
//and so on

在循环中,您可以获取响应值,如果您有预期的结果,可以通过编程方式比较它们:

def responseSOAP = context.expand('${SOAP Request1#Response}')
def responseSection = responseSOAP =~ /requestAnswer>(.*)</requestAnswer/
def response = responseSection[0][1]
if (response.equals(payLoad['ExpectedResult'])) {
testResult = 'Pass'
}
}

开源SoapUI非常强大,Groovy是一种非常酷的编程语言。一旦你了解了它们是如何协同工作的,很多事情都是可能的。

编辑: 如果要替换整个请求,可以使用 XmlHolder 访问它:

def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
//this gets a handle on the current request XML
def oldHolder = groovyUtils.getXmlHolder( 'SOAP Request1#Request' )
//your String XML from the spreadsheet must be parsed into XML
def newHolder = new XmlSlurper().parseText(MyXMLFromSheetAsString)
//replace
context.requestContent = newHolder.xml

最新更新