Acceso a Datos

2º DAM - Curso 2025-2026

User Tools

Site Tools


apuntes:api-testing

API Testing con Postman

Test scripts

Newman

Instalar Newman de forma global como comando en tu equipo, listo para ejecutarse directamente desde la consola (Si aún no tienes Node.js instalado, sigue estas instrucciones):

santi@zenbook:$ npm install -g newman

Cómo lanzar una colección de Postman con Newman:

santi@zenbook:$ newman run api-collection.postman_collection.json

Cómo lanzar una colección de Postman con Newman para un entorno determinado:

santi@zenbook:$ newman run -e localhost.postman_environment.json api-collection.postman_collection.json

Puedes encontrar una colección de ejemplo ya preparada con algunos scripts, lista para ser ejecutada con Newman aqui

API testing con Postman automatizado con GitHub Actions

Dockerfile

El primer paso será generar la imagen docker de la API que hemos desarrollado, para que podamos lanzarla luego como un contenedor docker

FROM eclipse-temurin:21-jdk-alpine
VOLUME /tmp
EXPOSE 8080
COPY target/games-0.1.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]

Docker compose

El siguiente es un ejemplo de un fichero docker-compose.yml listo para lanzar la API + Base de datos como contenedores docker

name: games
services:
  games-db:
    image: mariadb:11.3.2
    container_name: games-db
    restart: always
    environment:
      MYSQL_USER: games_user
      MYSQL_PASSWORD: games_password
      MYSQL_DATABASE: games
      MYSQL_PORT: 3306
      MYSQL_ROOT_PASSWORD: test_root_password
    ports:
      - "3306:3306"
    healthcheck:
      test: [ CMD, healthcheck.sh, --connect, --innodb_initialized ]
      interval: 5s
      timeout: 3s
      retries: 3
    networks:
      - network-games
  games-api:
    image: games-api
    container_name: games-api
    ports:
      - "8080:8080"
    depends_on:
      games-db:
        condition: service_healthy
    environment:
      SPRING_APPLICATION_JSON: '{
        "spring.application.name": "games",
        "sever.port": "8080",
        "spring.jpa.hibernate.ddl-auto": "update",
        "spring.jpa.properties.hibernate.globally_quoted_identifiers": "true",
        "spring.datasource.url": "jdbc:mariadb://games-db:3306/games",
        "spring.datasource.username": "games_user",
        "spring.datasource.password": "games_password",
        "spring.jpa.database-platform": "org.hibernate.dialect.MariaDBDialect"
      }'
    networks:
      - network-games
networks:
  network-games:
    driver: bridge

GitHub action

Por último, configuramos un workflow de GitHub Actions que hará lo siguiente:

  • Generamos la imagen docker de nuestra API
  • Lanzará nuestra API + Base de datos como contenedores docker
  • Instalará Newman
  • Lanzará la colección con los tests con Newman sobre la API que se acaba de lanzar
name: Integration tests with Newman

on:
  pull_request:
    branches:
      - main
      - develop

jobs:
  newman:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@master
      - uses: actions/setup-java@v5
        with:
          distribution: 'temurin'
          java-version: '21'
      - run: mvn package
      - run: docker build -t games-api .
      - run: docker compose up -d
      - run: npm install -g newman
      - run: newman run games.postman_collection.json -e local.postman_environment.json

© 2026 Santiago Faci

apuntes/api-testing.txt · Last modified: by Santiago Faci