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

How to run multiple SOAP requests from Excel spreadsheet in SoapUI?

我有一个电子表格,其中每一行都包含一个 SOAP 请求,该请求由该行中的数据串联而成。所以单元格 G2 是一个 SOAP 请求,单元格 G3 是一个不同的 SOAP 请求,单元格 G4 是另一个 SOAP 请求等等。我查看了将这 100 多个 SOAP 请求转移到 SoapUI(免费版)中的最佳方法,并 运行 将它们全部一次性转移。我还没有找到任何能给我完整工作解决方案的东西。有人可以建议最好的方法吗?提前致谢!

我不会告诉你怎么做,但我可以告诉你我是怎么做到的。在 Excel 中连接 XML 是混乱且容易出错的,特别是如果您的测试用例的技术水平较低。我在 Excel.

中询问了数据(参数)

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

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