Добавление точек проверки "содержит"

С помощью точек проверки "содержит" можно проверить, соответствуют ли возвращенные службой элементы содержимого XML фрагменту XML, который указан в точке проверки.

Об этой задаче

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

Сложные запросы на обслуживание или точки проверки могут содержать пустые элементы XML, которые не требуются в тестовом сценарии. При воспроизведении теста можно такие пустые элементы XML можно пропустить. В меню Окно > Параметры > Тест > Редактор тестов > Тест службы убедитесь, что включен переключатель Показывать столбец 'Пропустить пустой' в программе просмотра структуры XML. Эта опция отображает столбец Пропустить пустой в утилите просмотра структуры запроса. После этого можно выбрать элементы XML для пропуска.

Процедура

  1. Откройте редактор тестов и выберите элемент ответа службы.
  2. В области Сведения элемента теста перейдите на вкладку Сообщения и выберите панель Форма или Структура.
  3. Разверните строку конверта, щелкните правой кнопкой мыши на элементе, который вы хотите проверить, и выберите Создать точку проверки "содержит". Это действие создает точку проверки "содержит", включающую элемент XML из записанного ответа.
    Прим.: Можно также создать точку проверки "содержит" с помощью ответа сообщения, выбрав ответ сообщения на панели Содержимое теста и выбрав Добавить > Точка проверки "содержит". Однако, результат фактически будет таким же, как для точки проверки "равно", так как точка проверки содержит все содержимое XML ответа сообщения.
  4. Выберите точку проверки и введите ее имя на панели Сведения элемента теста.
  5. Выберите опции проверки:
    • Выберите переключатель Тестировать с помощью пространств имен XML, чтобы выполнить проверку по полной структуре документа XML, включая теги пространства имен, а не только простого имени. Отключите эту опцию для проверки только простого имени элемента и окончательного значения возврата.
    • Выберите переключатель Тестировать узлы текста XML для включения в проверку содержимого текстовых элементов.
    • Выберите переключатель Тестировать атрибуты XML для включения в проверку содержимого атрибутов.
  6. Если необходимо, выберите панели Форма, Структура или Исходный текст для изменения ожидаемого фрагмента XML.

    Для точки проверки "равно" ожидаемые данные XML содержат документ XML из элемента теста ответа. При необходимости можно отредактировать ожидаемые данные XML.

    Можно указать стандартные регулярные выражения Java™ на панели Структура. Выберите столбец Регулярное выражение в строке атрибута или значения текста и введите регулярное выражение в столбец Значение. Например, следующее регулярное выражение проверяет правильность формата электронного адреса: /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/

    При использовании регулярных выражений число узлов XML или фрагментов XML в точке проверки должно соответствовать числу ожидаемых узлов. Точка проверки возвращает состояние Пройдена, когда все регулярные выражения во фрагменте XML совпадают.

Пример

Можно использовать точку проверки "содержит", чтобы проверить, что ответ сообщения содержит только определенный элемент с определенным значением. Например, рассмотрим следующий ответ сообщения:
<s:Envelope
 xmlns:a="http://www.w3.org/2005/08/addressing"
 xmlns:s="http://www.w3.org/2003/05/soap-envelope">
  <s:Header>
    <a:Action
     s:mustUnderstand="1">http://www.w3.org/2005/08/addressing/soap/fault</a:Action>
    <a:RelatesTo>uuid:ed9bc447-d739-452f-989d-cd48344d494a</a:RelatesTo>
  </s:Header>
  <s:Body>
    <s:Fault>
      <s:Code>
        <s:Value>s:Sender</s:Value>
        <s:Subcode>
          <s:Value
           xmlns:a="http://schemas.xmlsoap.org/ws/2005/02/sc">a:BadContextToken</s:Value>
        </s:Subcode>
      </s:Code>
      <s:Reason>
        <s:Text
         xml:lang="en-US">The message could not be processed. This is most likely because the action &apos;http://Samples.ICalculator/Add&apos; is incorrect or because the message contains an invalid or expired security context token or because there is a mismatch between bindings. The security context token would be invalid if the service aborted the channel due to inactivity. To prevent the service from aborting idle sessions prematurely increase the Receive timeout on the service endpoint&apos;s binding.</s:Text>
      </s:Reason>
      <s:Node>http://www.w3.org/1999/xlink</s:Node>
      <s:Role>http://www.w3.org/1999/xlink</s:Role>
      <s:Detail
       xmlns:tns0="http://schemas.com/2003/10/Serialization/"
       xmlns:tns15="http://Samples.Windows"
       tns0:Id="id"
       tns0:Ref="idref">
        <tns15:GetCallerIdentityResponse>
          <tns15:GetCallerIdentityResult>str</tns15:GetCallerIdentityResult>
        </tns15:GetCallerIdentityResponse>
      </s:Detail>
    </s:Fault>
  </s:Body>
</s:Envelope>
Для проверки элемента Subcode ожидаемым содержимым точки проверки "содержит" является следующий фрагмент XML:
<s:Subcode
  xmlns:a="http://www.w3.org/2005/08/addressing"
  xmlns:s="http://www.w3.org/2003/05/soap-envelope">
   <s:Value
   xmlns:a="http://schemas.xmlsoap.org/ws/2005/02/sc">a:BadContextToken</s:Value>
</s:Subcode>
По умолчанию точка проверки "содержит" проверяет, содержит ли элемент с именем Subcode один элемент с именем Value. Можно использовать следующие опции:
  • Тестировать с помощью пространств имен XML: С использованием этой опции точка проверки проверяет, содержит ли элемент с именем "http://www.w3.org/2003/05/soap-envelope":SubCode один элемент с именем "http://www.w3.org/2003/05/soap-envelope":Value.
  • Тестировать узел текста XML:С этой опцией точка проверки также проверяет, содержит ли элемент с именем Value текст a:BadContextToken.
  • Тестировать атрибуты XML: С этой опцией точка проверки также проверяет, соответствуют ли атрибуты ожидаемому фрагменту XML. В этом примере опция Тестировать атрибуты XML не является необходимой, потому что элемент Subcode не имеет атрибутов.
Для проверки, возвращает ли правильно элемент Detail определенное значение для GetCallerIdentityResult, ожидаемым содержимым точки проверки "содержит" является следующий фрагмент XML:
<s:Detail
 xmlns:a="http://www.w3.org/2005/08/addressing"
 xmlns:s="http://www.w3.org/2003/05/soap-envelope"
 xmlns:tns0="http://schemas.com/2003/10/Serialization/"
 xmlns:tns15="http://Samples.Windows"
 tns0:Id="regular_expression"
 tns0:Ref="idref">
  <tns15:GetCallerIdentityResponse>
    <tns15:GetCallerIdentityResult>IdentityValue</tns15:GetCallerIdentityResult>
  </tns15:GetCallerIdentityResponse>
</s:Detail>
Можно использовать следующие опции:
  • Тестировать узел текста XML:С этой опцией точка проверки также проверяет, содержит ли элемент с именем GetCallerIdentityResult текст IdentityValue.
  • Тестировать атрибуты XML: С этой опцией точка проверки также проверяет, имеет ли ожидаемое значение атрибут Id, на который ссылается tns0:Id. Можно указать для этого значения регулярное выражение с помощью столбца регулярное выражение на панели Структура точки проверки. Например, tns0:Id="[a-zA-Z]" проверяет отсутствие в значении чисел.

Дальнейшие действия

Можно включить или выключить любую точку проверки, щелкнув правой кнопкой мыши в редакторе тестов и выбрав Включить или Выключить.

Комментарии