Arhn - архитектура программирования

Получить ответ на этапе выполнения теста с помощью SoapUI/ Groovy?

В SoapUI у меня есть хост-тестовый пример, который выполняет другой внешний тестовый пример (с несколькими тестовыми шагами) с помощью тестового шага «Выполнить тестовый пример». Мне нужно получить ответ от внешнего TC из моего TC хоста, так как мне нужно утверждать некоторые значения.

Я не могу передать свойства, так как они в XML. Могу ли я получить некоторые указания относительно того, как я могу использовать Groovy/SoapUI для этого.

14.07.2014

  • Можете ли вы объяснить это: я не могу передать свойства, так как они в XML? В SoapUI вы можете передавать все, что хотите, включая целые узлы XML. 14.07.2014
  • @SiKing, внешний TC имеет только одно свойство, которое я мог бы напрямую передать на шаге теста «Выполнить тестовый пример». Однако мне нужно передать XML-ответ от внешнего TC на мой хост-TC. 15.07.2014
  • @SiKing Я понимаю, что мы можем передавать узлы XML, и я использовал это при передаче значений на этапе тестирования «Передача свойства» с атрибутом «Ответ как XML». Перефразируя: не могли бы вы помочь мне передать ответ XML из шага тестирования во внешнем шаге тестирования в хост-TC? 15.07.2014
  • В вашем внешнем TC создайте другое свойство, а в конце TC используйте шаг Transfer Property, чтобы передать ему свой XML-узел. В TC вашего хоста просто прочитайте это свойство, как и любое другое. 15.07.2014
  • @SiKing звучит как хорошая идея (и я планирую ее использовать), но есть несколько внешних тестовых случаев, которые необходимо выполнить с хоста TC. Есть ли способ использовать Groovy в хосте TC для получения ответа от внешнего TC? Может быть, использовать контекст или переменные testRunner? 15.07.2014
  • @SiKing, не могли бы вы написать свой комментарий в качестве ответа, чтобы я мог его «принять» (о передаче ответа в виде узла XML). 17.07.2014

Ответы:


1

В вашем внешнем TC создайте другое свойство, а в конце TC используйте шаг Transfer Property, чтобы передать ему свой XML-узел. В TC вашего хоста просто прочитайте это свойство, как и любое другое.

Я также осмотрелся, чтобы узнать, можно ли это сделать из Groovy. В документации SoapUI говорится, что вам нужно обратиться к внешнему имени набор тестов/тестовый набор:

def tc = testRunner.testCase.testSuite.project.testSuites["external TestSuite"].testCases["external TestCase"]
def ts = tc.testSteps["test step"]

Но я не мог найти, как после этого получить ответ.

17.07.2014

2

Для ответа вы можете использовать приведенный ниже код.

testRunner.testCase.getTestStepByName("test step").testRequest.response.responseContent
20.07.2017
  • Великий ! Это мне очень помогло 07.11.2017

  • 3

    В дополнение к ответам Guest и SiKing я делюсь решением проблемы, с которой я столкнулся: если ваш шаг не типа «запрос», а «calltestcase», вы не можете использовать ответ гостя.

    У меня есть много запросов, содержащихся каждый в testCase, и мои другие testCase вызывают эти testCase каждый раз, когда мне нужно запустить запрос.

    Я настроил свои тестовые случаи запроса, чтобы возвращать ответ как пользовательское свойство, которое я называю «testResponse», чтобы я мог легко получить к нему доступ из других моих тестовых случаев.

    Я столкнулся с проблемой в следующей конфигурации: у меня есть шаг «calltestcase», который дает мне результат запроса. Далее в тесте у меня есть отличный скрипт, который должен вызвать этот шаг и получить значение ответа.

    Если я использую это решение:

    testRunner.runTestStepByName("test step")
    

    затем testRunner.testCase.getTestStepByName("test step").testRequest.response.responseContent

    Я застрял, так как для класса нет свойства testRequest.

    Решение, которое работает:

    testRunner.runTestStepByName("test step")
    def response_value = context.expand( '${test step#testResponse#$[\'value\']}' )
    

    другое решение:

        testRunner.runTestStepByName("test step")
        tStep = testRunner.testCase.getTestStepByName("test step")
        response = tStep.getPropertyValue("testResponse")
    

    Затем я извлекаю соответствующее значение из «ответа» (в моем случае это json, который мне нужно проанализировать).

    Конечно, это работает только потому, что я отвечаю на запрос как пользовательское свойство моего тестового примера запроса.

    Надеюсь, я был достаточно ясен

    12.09.2019
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..