Sintaxis de definición de pruebas

La prueba se define como un archivo YAML con las siguientes secciones:

 requirements: {}

info: 
  title: "New Configuration YAML File"
  version: 2

configs:
  globalVariables:
    protocol: https://
    domain: sample-api.us-east-a.apiconnect.automation.ibm.com
    basePath: /bank
  
  inputs:
    - default:
        value: string
        type: array
    - second:
        value: number
        type: string

  steps:
    - type: request
      method: get
      url: "{{ configs.globalVariables.protocol }}{{ domain }}{{ globalVariables.basePath }}/branches"
      var: branches
      mode: json
    
    - type: assert-is
      expression: branches
      value: "{{ type }}"
    
    - type: assert-exists 
      expression: branches.[1]
      stoponfail: true
    
    - type: assert-is 
      expression: branches.[0].type
      value: string
      stoponfail: true    
    
    - type: assert-is 
      expression: branches.[0].address.city
      value: string
      stoponfail: true  
    
    - type: assert-compares 
      expression1: branches.[0].type
      expression2: branches.[7].type  
    
    - type: request
      method: get
      url: https://sample-api.us-east-a.apiconnect.automation.ibm.com/orders/order/AB1234
      var: payload
      mode: json
    
    - type: assert-equals 
      expression: payload_response_statusCode
      value: 200
      ifexists: false
      stoponfail: false
    
    - type: assert-equals 
      expression: payload_response_header_Content-Type
      value: application/json
    
    - type: assert-in 
      expression: payload_response_header_Content-Type
      values: 
        - application/json
        - application/swagger+yaml
    
    - type: assert-contains 
      expression: payload_response_header_Content-Type
      value: app
    
    - type: assert-matches 
      expression: payload_response_header_Content-Type
      value: ^[a-z]+/json
    
    - type: assert-exists 
      expression: "payload"  
      stoponfail: false
    
    - type: assert-is 
      expression: "payload.tracking_reference"
      value: "string"
      ifexists: "false" 
      stoponfail: false
    
    - type: assert-exists 
      expression: payload.shipped_at
      stoponfail: false
    
    - type: assert-exists 
      expression: payload.status
      stoponfail: false
    
    - type: assert-exists 
      expression: payload.created_at  
      stoponfail: false

Tabla 1. Resumen de los parámetros admitidos por el atributo «type»

Tabla 1. Parámetros, descripción y subatributos
Parámetros Descripción Subatributos
globalVariables Las variables globales son ajustes que se mantienen constantes a lo largo de toda la prueba y que, por lo general, no cambian entre una ejecución y otra. Aquí puedes definir cualquier atributo según tus necesidades. Por ejemplo: - portocol: especifica el protocolo (por ejemplo, https://) utilizado en todas las solicitudes, lo que garantiza una comunicación segura. - domain: especifica la dirección del servidor principal para las solicitudes de la API. - basepath: define la ruta base para todos los puntos finales de la API (por ejemplo, /bank), que se añade al dominio para construir las URL de las solicitudes.
entradas Define varios conjuntos de parámetros de entrada que se utilizan en múltiples escenarios de prueba. Puedes crear varios conjuntos de datos con los atributos que necesites para escenarios de prueba específicos. Por ejemplo, «default» y «second» son dos conjuntos de datos, cada uno con sus propios atributos adaptados a distintos escenarios. Nota: Para ejecutar la prueba, debe haber al menos un conjunto de datos.
solicitud Realice una solicitud http. - method: Define el método HTTP que se va a utilizar. - url: Define la URL URL a la que se va a enviar la solicitud. - params: Define la correspondencia clave-valor de los parámetros que se van a enviar. - headers: Define la correspondencia clave-valor de los encabezados que se van a enviar. - var: Define el nombre de la variable en la que se va a almacenar la respuesta. - mode: Define qué tipo de datos se esperan y cómo analizarlos (formato admitido: json). Por ejemplo:
- type: request
- method: get
- url: https://sample-api.us-east-a.apiconnect.automation.ibm.com/bank/branches
- var: branches
- mode: json
verificar si Especifica que el tipo de la variable de la respuesta es «valor». - expresión: Define la variable que se va a comprobar. - valor: Define el tipo de respuesta que esperamos. Por ejemplo:
- type: assert-is
expression: branches
value: array
asegurar que existe Verifica que exista una variable concreta especificada en la expresión. - expresión: Define la variable que se va a comprobar. - stoponfail: Si falla alguna de las pruebas, el atributo stoponfail detiene la ejecución de las pruebas restantes. Para ello, hay que establecer stoponfail en «true». Por ejemplo:
- type: assert-exists
expression: branches.[1]
stoponfail: true
assert-equals Comprobar que una variable es igual a un valor. - expresión: Define la variable que se va a comprobar. - valor: Define el valor con el que se va a comparar. Por ejemplo:
- type: assert-equals
expression: payload_response_header_Content-Type
value: application/json
verificar que es mayor Verifica que la variable sea mayor que el valor. - expresión: Define la variable que se va a comprobar. - valor: Define el valor con el que se va a comparar. Por ejemplo:
- type: assert-greater
expression: payload_temperature
value: application/json
sin afirmaciones Verifica que la variable sea menor que el valor. - expresión: Define la variable que se va a comprobar. - valor: Define el valor con el que se va a comparar. Por ejemplo:
- type: assert-less
expression: payload_temperature
value: application/json
-
asignación Verificar que el elemento identificado por una expresión dada coincida con al menos un elemento de una lista dada. - expresión: Define la variable que se va a evaluar. - valor: Define una matriz de valores que se van a comparar. against.For ejemplo:
- type: assert-in
expression: payload_response_status
value: application/json
comparaciones de assert Verifica que el valor del elemento identificado por una expresión determinada se ajusta a un formato específico. - expresión: Define la variable que se va a comprobar. - valor: Define el valor de la expresión regular que se va a comparar. Ejemplo de « against.For »:
- type: assert-matches
expression: payload_response_header_Content-Type
value: [a-z]+/json
comparaciones de afirmación Afirmar que dos elementos son equivalentes de alguna manera. - expression1: Define la ruta del primer elemento que se va a comparar. - expression2: Define la ruta del segundo elemento que se va a comparar. Por ejemplo:
- type: assert-compares
expression1: branches.[0].type
expression2: branches.[7].type
contiene Verificar que el valor del elemento identificado por una expresión dada contenga una subcadena específica. - expresión: Define la variable que se va a comprobar. - valor: Define la subcadena con la que se va a comparar. Por ejemplo:
- type: assert-contains
expression: payload_response_header_Content-Type
value: app
cada Recorre la matriz a la que hace referencia la expresión y ejecuta los pasos parciales para cada elemento encontrado. - expresión: Define la variable a la que se aplica el ejemp test.For :
- type: each
expression: "analytics.events"
si Si se cumple la condición especificada (definida en la expresión), se ejecutarán las afirmaciones de los pasos de la condición «if»; de lo contrario, se omitirán. - expresión: condición que se va a comprobar - pasos: subpasos que ejecuta ATM si se cumple la condición. Por ejemplo, value: "string" expression: "payload.tracking_reference" - type: assert-is steps: expression: "{{payload_response_statusCode}} == 200"- type: if stoponfail: false