Как я могу делать запросы в цикле в soapUI с различным содержанием? - PullRequest
0 голосов
/ 23 октября 2019

У меня есть метод в качестве запроса в soapUI. он передает данные на онлайн-платформу. У меня есть разные переменные, которые каждый раз по-разному. Есть ли способ, как я могу зацикливать запрос с различным контекстом каждый раз?

Я пытался каким-то образом соединить запрос с Groovy сценарием, чтобы запрограммировать петли здесь, но смелый выяснить, как это сделать

цель состоит в том, чтобы, например, иметь файл cvs, в котором, например, сохранено 100 адресов. затем передайте все данные. но все данные, относящиеся к одному и тому же адресу, передаются в одном запросе. и запрос должен повторяться с каждой «группой данных» (например, адрес, имя, номер телефона, идентификатор, пол)

1 Ответ

0 голосов
/ 24 октября 2019

Если вы не используете 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"))

Затем, все еще в цикле, вызвать веб-сервис:

        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, возможно многое.

...