API Testing con RobotFramework

Muy buenos días!!

Siguiendo con las pruebas en Robot Framework, os dejo este ejemplo de API testing:

*** Settings ***

Library REST https://mystoreapi.com

*** Variables ***

${ep_catalog} /catalog

${ep_product} /product

${ep_order} /order

${order} {"customer": "Pablo García", "address": "123 Main St"}

${product} {"name": "Banana","price": 0.99,"manufacturer": "General Fruit CO", "category": "fruits","description": "Super Banana","tags":"La noble fruta" }

${product_order} {"productId":"882580", "amount": 2}

${product_id} 882580

${category} fruits

*** Test Cases ***

EP_CATALOG. Listamos todas las categorias

REST.GET ${ep_catalog}/categories

Integer response status 200

[Teardown] Output response body

EP_CATALOG. Listamos todos los primeros 100 productos

REST.GET ${ep_catalog}/products?limit=100&skip=0

Integer response status 200

[Teardown] Output response body

EP_CATALOG. Listamos los 100 primeros productos de una categoria

REST.GET ${ep_catalog}/category/${category}/products?limit=100&skip=0

Integer response status 200

[Teardown] Output response body

EP_CATALOG. Listamos un producto por su ID

REST.GET ${ep_catalog}/product/${product_id}

Integer response status 200

[Teardown] Output response body

EP_CATALOG. Creamos, leemos y borramos un nuevo producto en la tienda

REST.POST ${ep_catalog}/product ${product}

Integer response status 201

${nuevo_prod_id} Integer response body id

Log To Console ${nuevo_prod_id}[0]

REST.GET ${ep_catalog}/product/${nuevo_prod_id}[0]

Integer response status 200

Log To Console response body

REST.DELETE ${ep_catalog}/product/${nuevo_prod_id}[0]

Integer response status 200

Set Suite Variable ${nuevo_prod_id}

[Teardown] Output response body

EP_ORDER. Creamos un nuevo pedido, añadimos un producto, listamos de nuevo el pedido, borramos el producto,listamos y borramos el pedido

REST.POST ${ep_order}/new ${order}

Integer response status 201

${order_id} Integer response body id

Log To Console response body

REST.POST ${ep_order}/${order_id}[0]/product ${product_order}

Integer response status 201

Log To Console response body

REST.GET ${ep_order}/${order_id}[0]

Integer response status 200

Log To Console response body

REST.DELETE ${ep_order}/${order_id}[0]/product/${product_id}

Integer response status 200

Log To Console response body

REST.GET ${ep_order}/${order_id}[0]

Integer response status 200

Log To Console response body

REST.DELETE ${ep_order}/${order_id}[0]

Integer response status 200

[Teardown] Output response body

  • Tips

    • Usamos la libreria REST

    • Ojo con las variables que recogemos del 'response body'

      • ${nuevo_prod_id} Integer response body id

        • Son objetos tipo array por defecto.

      • Si queremos usar su valor, tenemos que pasar obligatoriamente el índice

        • REST.GET ${ep_catalog}/product/${nuevo_prod_id}[0]

        • En nuestro caso siempre será 0 ya que tenemos una colección con un único elemento.

    • Todos los resultados se muestran en el reporte integrado HTML dentro de la carpeta /results de nuestro proyecto

Espero que les sirva de ayuda.

Saludos!!

Patito Miner
May 15, 2024

Lujazo de aporte! Recomendación, usando el slash podés darle formato de bloque de código al código para que quede más chuletón.