我如何在soapUI中以不同的内容在循环中发出请求?

问题描述 投票:0回答:1

我有一个方法作为soapUI中的请求。它将数据传输到在线平台。我有不同的变量,每次都有不同的竞争。有没有一种方法可以让我每次都用不同的竞争循环请求?

我试图以某种方式将请求连接到groovy脚本以便对循环进行编程,但无法弄清楚该怎么做

目标是拥有一个cvs文件,其中保存了100个地址。然后转移所有数据。但是与同一地址相关的所有数据都在同一请求中传输。并且必须对每个“数据组”(例如地址,姓名,电话号码,ID,性别)重复该请求]

api loops request soapui
1个回答
0
投票

如果您不使用Pro,则可以使用开放源代码版本做很多事情,但是需要一些Groovy脚本。不过这并不难。基本前提是:从CSV读取一些数据->为每个记录替换变量值->使用这些变量调用服务。多合一脚本。

让我们首先获取CSV数据:

    new File("/path/to/data.csv").splitEachLine(",") { line ->
        def address = line[0]
        def name = line[1]
        def telephoneNumber = line[2]
        def id = line[3]
        def gender = line[4]

测试以确保:

        log.info(name)

SoapUI使用一个称为属性的概念,该概念链接到各种级别的范围:测试用例,测试套件,项目等。您可以使用CSV值填充道具,并在SOAP调用中使用它们。您可以将其与以上内容结合使用,但为了清楚起见,我将其拆分:

        testRunner.testCase.setPropertyValue( "address", address )
        testRunner.testCase.setPropertyValue( "name", name )
        testRunner.testCase.setPropertyValue( "telephoneNumber", telephoneNumber )
        testRunner.testCase.setPropertyValue( "id", id )
        testRunner.testCase.setPropertyValue( "gender", gender )

如果选择了测试用例,您将在“自定义属性”选项卡上看到它们。您还可以像下面这样以编程方式检索值:

        log.info(testRunner.testCase.getPropertyValue("name"))

然后,仍然在循环中,调用Web服务:

        def soapTestStep = testRunner.testCase.getTestStepByName("My SOAP Request").name
        testRunner.runTestStepByName(soapTestStep)

如果要把结果XML保存到文件中,请按以下方式获取它:

        import com.eviware.soapui.support.XmlHolder
        def xml = new XmlHolder(context.response)

结束循环:

    }

最后一部分是将属性值动态获取到soap调用中。您可以在请求XML中这样做:

    <soap:Header/>
        <soap:Body>
            <ns:SomeRequest>
                 <ns:address>${#TestCase#address}</ns:address>
                 <ns:name>${#TestCase#name}</ns:name>
                 ...

一旦您意识到您可以使用完整的Groovy语言,就有很多可能。

© www.soinside.com 2019 - 2024. All rights reserved.