Afirmaciones en SoapUIScripts, XQuery, tipos XPath
⚡ Resumen inteligente
Afirmaciones en SoapUI Son los puntos de control que deciden si la respuesta de un servicio web es correcta, convirtiendo una solicitud que simplemente se ejecuta en una prueba que realmente pasa o falla con contenido real y verificable.
¿Qué es una afirmación?
Aserción significa acto de afirmar o afirmar algo. También puede interpretarse como un punto de control o un punto de validación.
Una vez que se envía una solicitud a un servidor web, se recibe una respuesta. Necesitamos validar si la respuesta contiene los datos que esperamos. Para validar la respuesta, necesitamos usar aserciones. Sin una aserción, un paso de prueba solo demuestra que el servicio respondió, no que respondió correctamente, por lo que cada Prueba de API debería llevar al menos uno.
Tipos de afirmación
Hay varias formas de afirmar una respuesta; sin embargo, nos centraremos en las más utilizadas. SoapUI tipos de aserción al validar una respuesta. A continuación se muestran las categorías que están disponibles en la versión de código abierto de SoapUI.
- Contenido de la propiedad
- Estándar de estado de cumplimiento
- Script
- SLA
- JMS
- Seguridad
El cuadro de diálogo agrupa todas las afirmaciones bajo esas categorías, como se muestra en la captura de pantalla a continuación.

Además de las funciones mencionadas anteriormente, la versión Pro también incluye una función de aserción JDBC integrada que nos permite verificar si el servicio web ha actualizado correctamente la base de datos.
Nota de versión: corriente SoapUI La documentación también enumera un JDBC categoría (Estado JDBC y Tiempo de espera JDBC) junto con las categorías anteriores, y una Contenido del mensaje afirmación dentro del Contenido de la propiedad para una comparación XML más completa. La edición comercial a la que se hace referencia aquí como "Pro" ahora se vende como ReadyAPI Desarrollado por SmartBear, por lo que las etiquetas del menú en las versiones más recientes pueden mostrarse de forma diferente, aunque el comportamiento de la aserción se mantiene igual.
Contiene afirmación
Busca la existencia de la cadena especificada. También admite expresiones regulares.
Continuaremos con el mismo ejemplo del tutorial anterior con solicitud WSDL como http://www.dneonline.com/calculator.asmxSi aún no has creado ese proyecto, trabaja a través de Creación de un proyecto, un conjunto de pruebas y un caso de prueba. de antemano.
Paso 1: Por defecto no hay aserciones.
- El número de afirmaciones se muestra en la pestaña Afirmaciones.
- Para agregar una nueva afirmación, haga clic en el botón "Agregar nueva afirmación".
Paso 2: Ahora
- Seleccione la categoría de afirmación.
- Seleccione el tipo de afirmación.
- Haga clic en 'Agregar'
Paso 3: Vamos a comprobar si la cadena '46' existe en la respuesta. Haz clic en 'Aceptar'.
Nota: También podemos ignorar mayúsculas y minúsculas y agregar expresiones regulares.
Paso 4: Al agregarlo, se ejecuta inmediatamente la aserción y muestra si es VÁLIDO o INVÁLIDO.
Paso 5: Ahora supongamos que cambiamos el contenido de 'Contains Assertion en SoapUI' a '47 y veamos qué pasa.
Paso 6: Se ejecuta la aserción y se muestra el resultado al usuario. Como no encontramos la cadena '47' en la respuesta, la aserción ha fallado.
No contiene afirmación
Su contraparte funciona a la inversa. Busca la inexistencia de la cadena especificada. También admite expresiones regulares.
Paso 1: Ahora, después de hacer clic en el botón 'agregar nuevas aserciones',
- Seleccione la categoría de afirmación.
- Seleccione el tipo de afirmación: en este caso, "NO contiene".
- Haga clic en 'Agregar'
Paso 2: Validemos si la cadena 'intA' existe en la respuesta. Introduzca la cadena 'FromCurrency' y haga clic en 'Aceptar'.
Paso 3: Tan pronto como se agrega una aserción, se ejecuta y muestra el resultado. Hasta ahora hemos agregado dos aserciones, por lo que ambas se ejecutan y muestran el resultado.
Paso 4: Ahora vamos a cambiar el contenido de la 'Aserción No Contiene' y veremos qué sucede. Comprobaremos si la cadena "AddResult" no existe.
Paso 5: La cadena 'AddResult' está presente en la respuesta, por lo tanto, la aserción 'NOT Contains' fallará como se muestra a continuación.
Aserción de coincidencia XPath
La coincidencia de cadenas es poco precisa, por lo que la siguiente aserción se dirige a un único nodo. Utiliza una expresión XPath para seleccionar el nodo de destino y sus valores. XPathes un lenguaje de consulta XML para seleccionar nodos de un documento XML.
Paso 1: Ahora, después de hacer clic en el botón 'Agregar nuevas aserciones',
- Seleccione la categoría de afirmación.
- Seleccione el tipo de afirmación: en este caso, "XPath Match"
- Haga clic en 'Agregar'
Paso 2: Agregar XPath. Se abre la ventana.
Antes de agregar un SoapUI XPath, necesitamos declarar el espacio de nombres. Un espacio de nombres XML es una colección de nombres, identificados por una referencia de Identificador Uniforme de Recursos (URI), que se utilizan en documentos XML como nombres de elementos y atributos. Lo mismo se utiliza en el SoapUI Aserción XPath.
Para declarar un espacio de nombres XML, solo tenemos que hacer clic en el botón "Declarar", que hará el trabajo por nosotros; de lo contrario, también podemos declarar manualmente un espacio de nombres nosotros mismos.
Después de declarar el espacio de nombres, necesitamos hacer referencia a la ruta XPath utilizando el espacio de nombres creado.
Al hacer clic en el botón "Declarar", aparecerán dos espacios de nombres, ya que tenemos dos URI. Uno de ellos es el esquema. URL y el otro corresponde al servicio web propiamente dicho URLNecesitamos usar el espacio de nombres real donde se encuentra el servicio web y NO el espacio de nombres del esquema al hacer referencia a XPath. Las líneas declaradas aparecen en la parte superior del cuadro XPath, como se muestra a continuación.
declarar espacio de nombres jabón =’http://schemas.xmlsoap.org/soap/envelope/’;
declarar espacio de nombres ns1=’http://tempuri.org/’;
Paso 3: Ahora necesitamos introducir la ruta XPath del nodo XML que necesitamos validar.
//ns1:AddResult Nos da el valor del nodo encerrado entre & y ns1 corresponde al espacio de nombres declarado que apunta a 'http://tempuri.org/'
Después de ingresar el XML, debemos hacer clic en "Seleccionar del actual" para que el valor de la respuesta actual se seleccione para compararlo en el futuro.
Paso 4: Hasta ahora,
- Después de declarar los espacios de nombres, ingresamos el XPath del nodo XML que necesitamos validar.
- Necesitamos hacer clic en 'Seleccionar de actual' para que el valor actual sea el valor esperado.
- El valor actual se muestra al usuario y podemos modificarlo si es necesario.
- Clic en Guardar'.
Paso 5: La aserción añadida en SoapUI Se mostrará como se indica a continuación.
Afirmaciones de secuencias de comandos
Esta técnica de afirmación es la más utilizada ya que es extremadamente difícil gestionar y mantener cientos de afirmaciones.
SoapUI usa ya sea Groovy secuencias de comandos o JavaScript para la creación de scripts de aserciones. La técnica de scripting se adopta para el desarrollo.ping Un marco para probar SOAP. Las aserciones de script se utilizan en las siguientes circunstancias.
- La programación de scripts permite al usuario realizar ciertas operaciones antes y después de ejecutar un caso de prueba mediante los métodos `setup` y `teardown`, respectivamente. `setup` es un procedimiento que se ejecuta antes de ejecutar un método específico (por ejemplo, la creación e inicialización de objetos), mientras que `teardown` es un procedimiento que se ejecuta después de ejecutar el método (por ejemplo, la destrucción de objetos y la limpieza). Esta funcionalidad no está disponible en otros tipos de aserciones y solo se puede implementar mediante código.
- Permite a los usuarios abrir y cerrar un proyecto, inicializar o limpiar la configuración relacionada con el proyecto y también trabajar con variables de entorno, lo cual resulta muy útil durante la creación de scripts.
- Nos ayuda a afirmar un contenido de Respuesta dinámico.
- Las aserciones de scripting se utilizan para crear aserciones definidas por el usuario que NO están predefinidas por SoapUI.
Para demostrar una aserción de script en SoapUIHaremos uso del WSDL de la calculadora, el caso de prueba 'Add' que habíamos creado anteriormente.
Paso 1: Los pasos para agregar un script Groovy son los mismos que para otras aserciones, con la diferencia de que esta aserción no es predefinida. En cambio, es una aserción definida por el usuario, lo que ofrece mayor flexibilidad que las integradas.
Seleccione el paso de prueba contra el cual se debe agregar la afirmación.
Haga clic en el botón "Agregar afirmación" como se muestra a continuación.
Paso 2: Ahora seleccione la categoría de Aserción.
- En este caso es Script.
- Seleccionar SoapUI Aserción de script y no tiene subtipos asociados.
- Haga clic en 'Agregar'.
Paso 3: Se abre el cuadro de diálogo de scripting, donde el usuario podrá escribir un script personalizado para validar la respuesta XML.
Paso 4: Ahora vamos a escribir un script Groovy para validar la tasa de conversión. El script se adjunta a continuación con los comentarios incorporados. Se recomienda tener conocimientos sobre Java Guión o Groovy Guión antes de intentar escribir su propio guión.
//Define Groovy Utils and holder for validating the XML reponse content def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context) def holder = groovyUtils.getXmlHolder(messageExchange.responseContent) //Define the NameSpace holder.namespaces["ns1"] = "http://tempuri.org/" //Get the Value of the Node 'AddResult' and assign to a variable def addResult = holder.getNodeValue("//ns1:AddResult") //print the value of the result in the Output panel log.info "The result value for integers is " + addResult //Comparing the value to print 'Pass' or 'Fail' if(addResult=="46") { log.info "Pass" } else { log.info "fail"}
- Haga clic en el botón "Ejecutar" para activar la ejecución.
- La salida del script se muestra en el panel Salida. Ha impreso tanto el valor de conversión como el resultado final (aprobado o reprobado).
- Se muestra la información "Se aprobó la aserción de script". Haga clic en Aceptar.
Nota: La ventana emergente de información final siempre se mostrará con el mensaje "Aserción del script aprobada", siempre y cuando el script sea sintácticamente correcto. No tiene correlación con su afirmación en el guión.
haga clic en Aceptar
Paso 5: Ahora la pestaña de aserciones muestra todas las aserciones que hemos agregado para este conjunto de pruebas con el estado de cada una de ellas.
Paso 6: Ahora
- Seleccione el conjunto de pruebas en el árbol del Navegador.
- Haga clic en el botón "Ejecutar"
- Los resultados se mostrarán para todo el conjunto de pruebas.
Aserción de coincidencia XQuery
Utiliza una expresión XQuery para seleccionar contenido de la propiedad de destino. Necesitamos un XML de respuesta mucho más grande para comprender mejor la aserción XQuery en SoapUIImportemos otro WSDL como se muestra a continuación: http://www.webservicex.net/medicareSupplier.asmx?WSDL
Nota: Los puntos finales de demostración públicos de webservicex.net utilizados en este tutorial ya no son accesibles de forma fiable, por lo que las capturas de pantalla de la solicitud y la respuesta que aparecen a continuación se mantienen como ejemplo de referencia. Cualquier WSDL que devuelva un conjunto de nodos repetitivos comprobará la aserción XQuery exactamente de la misma manera.
Paso 1: Haga clic con el botón derecho en el proyecto existente y seleccione 'Agregar WSDL'.
Paso 2: Se abrirá el cuadro de diálogo Agregar WSDL. Deje las demás opciones por defecto y haga clic en el botón "Aceptar".
Paso 3: Todas las operaciones se enumeran como se muestra a continuación.
Paso 4: Ahora agreguemos un Caso de prueba dentro del mismo conjunto de pruebas que habíamos creado para Pruebas el conversor de moneda.
Paso 5: Introduzca el nombre del caso de prueba y haga clic en el botón 'Aceptar'.
Paso 6: El caso de prueba se crea como se muestra a continuación.
Paso 7: Agregue un nuevo paso de prueba de tipo 'Solicitud de prueba SOAP' como se muestra a continuación.
Paso 8: Introduzca el nombre del paso de prueba. Por ejemplo, «Proveedor_por_Ciudad», que sería más significativo. Haga clic en «Aceptar».
Paso 9: Seleccione el Operación que queremos validar. En este caso es 'MedicareSupplierSoap -> GetSupplierByCity'. Haga clic en 'Aceptar'.
Paso 10: Introduzca el nombre del caso de prueba y haga clic en 'Aceptar'.
Paso 11: El esquema XML de la solicitud se mostrará como se muestra a continuación.
Paso 12: Ahora vamos a buscar toda la información de los proveedores para la ciudad de Nueva York.
Para ello, agregue las siguientes líneas a su código.
<GetSupplierByCity xmlns="http://www.webservicex.net/"> <City>New York</City> </GetSupplierByCity>
WSDL a continuación URL – http://www.webservicex.net/medicareSupplier.asmx?op=GetSupplierByCity
Paso 13: Al ejecutar la prueba, recibimos la siguiente respuesta.
Paso 14: Supongamos que necesitamos validar todos los números de proveedor. No podemos usar aserciones XPath, ya que necesitaríamos cientos de ellas. Por lo tanto, el uso de XQuery es inevitable en este caso.
XQuery Assertion nos ayuda a validar un grupo de respuestas XML que son de naturaleza repetitiva.
Paso 15: Ahora haga clic en 'Agregar una aserción',
- Seleccione la "Categoría de afirmación": Contenido de propiedad en este caso.
- Seleccione el tipo de afirmación como 'Aserción XQuery'
- Haga clic en 'Agregar'.
Paso 16: De forma similar a la aserción XPath, necesitamos declarar el espacio de nombres.
- Haga clic en el botón 'Declarar' para permitir automáticamente SoapUI Para declarar el espacio de nombres, al hacer clic en el botón "Declarar", aparecerá una ventana emergente con el mensaje "Declarar espacio de nombres desde el esquema". Haga clic en "Sí" para continuar, como se muestra a continuación.
- Para recuperar todo el número de proveedor, debemos escribir una consulta XPath y la colocaremos dentro de las etiquetas y .
- Haga clic en 'Seleccionar de la actual' que se ejecutará a partir de la respuesta actual.
- Al hacer clic en 'Seleccionar de la lista actual', se mostrarán todos los números de proveedor.
- Clic en Guardar'.
Nota: Al pulsar el botón 'Declarar', es posible que obtenga resultados diferentes. URL's como declaración de espacio de nombres, sin embargo, el espacio de nombres de la ubicación real del servicio web es lo que se consideraría para la codificación.
La expresión XQuery finalizada, con sus declaraciones de espacio de nombres, tiene este aspecto.
// Namespace declaration declare namespace soap='http://schemas.xmlsoap.org/soap/envelope/'; declare namespace ns1='http://www.webservicex.net/'; declare namespace x = ''; // Placing the result in Myresult Tags{ // Iterating through all the supplier number for $x in //ns1:GetSupplierByCityResponse/ns1:SupplierDataLists/ns1:SupplierDatas/ns1:SupplierData //Return all the Supplier number within ‘SupplierNumber’ Tags. return {data($x/ns1:SupplierNumber)} }
Paso 17: Se ejecuta la aserción XQuery y el resultado final se muestra en el panel "Aserciones", como se muestra a continuación. Ahora hemos agregado correctamente una aserción XQuery con la que hemos validado toda la información del número de proveedor. Esta información se comparará con los datos reales cada vez que se envíe una solicitud al servidor web.
Nota: No se mostrarán los valores reales. Si todos los valores reales son iguales a los valores esperados, se mostrará "VÁLIDO"; de lo contrario, se mostrará "Error".
¿Cuándo utilizar la afirmación incorporada?
Una vez cubiertas las opciones de apuntar y hacer clic y las opciones mediante scripts, la pregunta práctica es cuál elegir.
- Cuando una respuesta es corta y puede validarse utilizando una de esas afirmaciones incorporadas.
- También podemos utilizar la aserción incorporada si la respuesta enviada desde el servidor web es siempre de naturaleza estática. Si es dinámico, no podremos afirmarlo utilizando aserciones incorporadas.
- Cuando el uso de aserciones incorporadas, como aserciones de tiempo de espera y aserciones de seguridad, se vuelve inevitable.
- Las afirmaciones incorporadas son bastante buenas para un uso único en el que no es necesario repetir las pruebas.
Opciones de afirmaciones
Las aserciones creadas se pueden controlar mejor con la ayuda del panel de control que se destaca a continuación.
Las afirmaciones creadas permiten a los evaluadores configurar las siguientes cosas desde la caja de herramientas de afirmaciones.
| Opción | Mareas Ideales para Lecciones |
| La Aserción seleccionada sube en el orden. | |
| La afirmación seleccionada baja en el orden. | |
| Elimina la afirmación seleccionada | |
| Reconfigurar/editar la aserción seleccionada. |
A continuación se detallan las características disponibles exclusivamente en la versión Pro de SoapUI, ahora se envía como ReadyAPILa versión Pro también nos ayuda a agrupar aserciones para que podamos agregar una capa más de validación a las aserciones creadas.
- Y: Todas las aserciones se evalúan como aserciones VÁLIDAS, lo que dará como resultado una condición de grupo APROBADA.
- O: Al menos una de las afirmaciones dentro del grupo debe ser VÁLIDA para poder afirmar una condición de grupo APROBADA.
- La versión Pro también permite Clonación de afirmacionesEsta opción permite a los evaluadores autorizar la copia de una aserción a un paso de prueba diferente en el mismo proyecto o en uno diferente.
- Deshabilitar/Habilitar aserciones: Esta opción permite deshabilitar o habilitar cualquier aserción, ya sea agrupada o no. Si una aserción está deshabilitada, aparecerá atenuada y, al ejecutar un caso de prueba, las aserciones deshabilitadas no se ejecutarán.
- Desagrupar aserciones: Cualquier aserción agrupada puede desagruparse si los evaluadores así lo deciden.
Lista completa de métodos disponibles en varios tipos de afirmaciones
La tabla que aparece a continuación recopila todas las afirmaciones mencionadas anteriormente, agrupadas por la categoría en la que aparecen en el cuadro de diálogo Agregar afirmación.
| Mecanismo de afirmación | Mareas Ideales para Lecciones |
| CONTENIDO DE LA PROPIEDAD | |
| Contiene | Busca la existencia de la cadena especificada. También admite expresiones regulares. |
| no contiene | Busca la inexistencia de la cadena especificada. También admite expresiones regulares. |
| Coincidencia XPath | Utiliza la expresión XPath para seleccionar el nodo de destino y sus valores. |
| Coincidencia de XQuery | Utiliza una expresión XQuery para seleccionar contenido de la propiedad de destino. |
| Cumplimiento, Estado, Estándares | |
| HTTP Descargar todos los recursos | Valida el documento HTML después de la descarga y se mantiene válido para cualquier propiedad que contenga HTML. |
| Estado HTTP no válido Codes | Verifica si la respuesta HTML contiene un código de estado que no está en la lista de códigos definidos. |
| No es culpa de SOAP | Verifica si el último mensaje recibido no es una falla SOAP. Es muy obvio que solo se aplica a los pasos de prueba de SOAP. |
| Cumplimiento del esquema | Verifica si el último mensaje recibido cumple con la definición de esquema estándar WSDL o WADL. Es válido para los pasos de prueba SOAP y REST. |
| Fallo de jabón | Verifica si el último mensaje recibido es una falla SOAP. Es lo inverso de las afirmaciones de error "NO SOAP". |
| Respuesta SOAP | Verifica si la última respuesta recibida es una respuesta SOAP válida y es válida únicamente para los pasos de solicitud de prueba SOAP. |
| Estado HTTP válido Codes | Verifica si la respuesta HTML contiene un código de estado que se encuentra en la lista de códigos definidos. Es lo opuesto a 'Estado HTTP no válido'. CodeAfirmación de s. |
| Solicitud de direccionamiento WS | Verifica si la última solicitud recibida contiene encabezados WS-Addressing adecuados. |
| Respuesta de direccionamiento WS | Verifica si la última respuesta recibida contiene encabezados WS-Addressing adecuados. |
| Estado de seguridad WS | Valida si el último mensaje recibido contiene encabezados WS-Security válidos y solo es válido para solicitudes SOAP. |
| Script | |
| Afirmación de guión | Permite a los usuarios ejecutar un script personalizado para realizar validaciones definidas por el usuario. |
| SLA | |
| SLA de respuesta | Valida si el tiempo de respuesta de la última respuesta recibida estuvo dentro del límite definido. |
| JMS | |
| Estado JMS | Verifica si la solicitud JMS del paso de prueba se ha ejecutado correctamente y es válida para los pasos de prueba con un punto final JMS. |
| Tiempo de espera JMS | Verifica si la respuesta JMS de un paso de prueba no tardó más que la duración especificada. |
| Seguridad | |
| Exposición de información confidencial | Verifica si el mensaje de respuesta no expone información confidencial sobre el sistema de destino. Podemos utilizar esta afirmación para los pasos de prueba REST, SOAP y HTTP. |
DESCARGUE EL PROYECTO SOAPUI QUE CONTIENE LAS Afirmaciones ANTERIORES
Errores comunes y solución de problemas
La mayoría de los fallos de aserción tracVolvemos a un pequeño conjunto de errores, así que revísalos antes de reescribir una expresión.
- Utilice el espacio de nombres correcto. El espacio de nombres debe ser el URL donde se encuentra el servicio web.
- Si se produce un error durante el desarrolloping una aserción de script, use 'log.info' para imprimir el contenido de las variables.
- Si no ha obtenido el resultado deseado, verifique si se pasa una entrada válida en la solicitud.
Por ejemplo, en un convertidor de divisas, si se introduce 'intA' como 'x', que no es un número entero, la salida arroja un código de error 'SOAP-Client', lo que significa que el problema reside en el parámetro que se pasa desde el cliente. La solicitud con el valor no válido se muestra primero.
La respuesta devuelve el código de error en lugar de un resultado, como se muestra a continuación.
Asegúrese de usar la sintaxis correcta al usar XPath y las aserciones XQuery. NO debe usar el punto (.) en lugar de los dos puntos (:) al usar la aserción anterior. La sintaxis es //namespace:Tagname y NO //namespace.tagname. Si lo hace, podría recibir el mensaje "No se encontró ninguna coincidencia en la respuesta actual", aunque el nombre de la etiqueta sea correcto.














































