Comprobar las rutas que necesitan los visitantes

PythonBeginner
Practicar Ahora

Introducción

FIELDNOTES es un pequeño museo de demostración. Los visitantes exploran una exposición, buscan la entrada y descargan una guía para leerla sin conexión. Antes de cambiar el sitio, necesitas comprobaciones que reconozcan una visita completa, además de una respuesta correcta de la portada.

Completarás una pequeña prueba en Python, demostrarás que acepta un paquete válido y rechazarás descargas ausentes o engañosas. Basta con familiaridad básica con la terminal; aquí se explican los detalles de Python y HTTP. No necesitas desarrollar el sitio, instalar programas ni crear cuentas externas. El museo y la dirección son ficticios.

Live Website es el sitio actual en el puerto 8081. Candidate Preview es una vista previa independiente en el puerto 8082. Workstation es la terminal preparada en /home/labex/project/release-gate. Cada unidad empieza de forma independiente; las vistas previas nunca modifican el sitio publicado.

Comprobar el recorrido completo del visitante

En este paso, convertirás una necesidad real del visitante en una comprobación automática y demostrarás que distingue paquetes correctos y defectuosos. Empieza en Live Website.

Conocer el servicio normal

Abre Explore the exhibition ↗, lee Close to home y elige Plan your visit ↗. La página indica Entrance: East gate. Selecciona Download visitor guide ↓ y abre el texto descargado: también debe contener Entrance: East gate. Una descarga es un archivo que guarda el navegador; su ubicación depende de la configuración de descargas. Vuelve al inicio con FIELDNOTES. Abre también Visit y Step-free route ↗; la página de acceso y su descarga describen Garden ramp. Estas funciones deben conservarse.

Cambia a Workstation. ls enumera los nombres de un directorio; cat muestra un archivo:

ls

Debes encontrar packages, drafts, live, preview, tests.py, pipeline.sh y tools.py. Un paquete es una colección guardada de archivos; .tar.gz es su formato de archivo comprimido. drafts/ es una copia de trabajo editable. tools.py es el ejecutor local proporcionado, no un servicio de CI alojado.

cat tests.py

HTTP es el protocolo de solicitud y respuesta del navegador. 200 indica una respuesta correcta; 404, que el recurso solicitado no existe. Un 200 con la entrada equivocada sigue siendo un fallo del servicio para el visitante. Un error de conexión significa que no llegó ninguna respuesta utilizable.

Completar la comprobación del contenido

python3 ejecuta código Python. La función proporcionada read(base, path) solicita la ruta y devuelve su texto. base es la dirección del servidor temporal que elige el ejecutor. def define una función; las líneas sangradas le pertenecen. with cierra la respuesta al terminar de leer. assert condition, 'message' provoca un fallo cuando la condición es falsa. in comprueba si el texto esperado está en la respuesta. El texto entre comillas es literal. = asigna un valor; + une textos. Solo tienes que añadir la aserción de la guía, pero se facilita el archivo pequeño completo para editarlo con seguridad.

cat > tests.py reemplaza el archivo. <<'PYTHON' inicia un documento incrustado: pega todo el bloque hasta el último PYTHON, que debe estar solo en su línea. Las comillas conservan el código literalmente. Mantén exactamente la sangría mostrada:

cat > tests.py <<'PYTHON'
from urllib.request import urlopen

def read(base, path):
    with urlopen(base + path, timeout=3) as response:
        assert response.status == 200, 'Expected HTTP 200: ' + path
        return response.read().decode('utf-8')

def check(base):
    home = read(base, '/')
    assert 'FIELDNOTES' in home, 'Missing museum homepage'
    assert 'href="/visit.html"' in home, 'Missing visit link'
    visit = read(base, '/visit.html')
    assert 'Entrance: East gate' in visit, 'Wrong entrance on visit page'
    assert 'href="downloads/guide.txt"' in visit, 'Missing visitor download link'
    guide = read(base, '/downloads/guide.txt')
    assert 'Entrance: East gate' in guide, 'Wrong visitor guide content'
PYTHON

La página utiliza href="downloads/guide.txt", un enlace relativo. Desde /visit.html, se resuelve como /downloads/guide.txt. Un enlace que comienza por / parte de la raíz del sitio. Comprueba tanto el enlace real como el contenido de destino; probar otra URL que nadie utiliza podría ocultar el fallo que encuentra el visitante.

Validar la prueba antes de confiar en ella

La acción check extrae un paquete en un directorio temporal, inicia un servidor HTTP real y llama a check(base). Conserva los bytes aprobados para usarlos después. No publica ni repara el paquete:

python3 tools.py check packages/reference.tar.gz

Espera PASS: visitor checks. Frozen package .... El identificador final varía. Si Python muestra SyntaxError o IndentationError, la prueba está mal escrita; vuelve a escribir el bloque y prueba primero la referencia válida antes de juzgar un candidato.

Ejecuta dos fallos intencionados:

python3 tools.py check packages/missing.tar.gz

Espera FAIL: HTTP Error 404: File not found: falta la descarga. Continúa en la misma terminal; el fallo no la cierra.

python3 tools.py check packages/wrong.tar.gz

Espera FAIL: Wrong visitor guide content. Este candidato devuelve 200, pero envía al visitante a una entrada equivocada. No elimines la aserción para que pase. Una prueba que rechaza la referencia o acepta este candidato no resulta útil.

Comparar la evidencia del navegador

preview selecciona archivos únicamente para Candidate Preview:

python3 tools.py preview packages/wrong.tar.gz

Cambia a Candidate Preview y recarga. Abre la exposición y después Plan your visit. La página aún indica East gate, pero la guía descargada dice West gate. Esta diferencia explica la necesidad de comprobar el contenido.

Vuelve a Workstation y selecciona la vista previa del candidato válido:

python3 tools.py preview packages/candidate.tar.gz

En Candidate Preview, vuelve al inicio, recarga y repite la visita y la descarga; ambas indican ahora East gate. En Live Website, el sitio original sigue funcionando. Has probado el comportamiento sin publicar ningún candidato defectuoso. Descargar desde el navegador no ejecuta la comprobación automática; cada observación aporta evidencia diferente.

Resumen

Has comprobado el recorrido del visitante, completado una aserción de contenido y distinguido una descarga ausente de una respuesta correcta con contenido equivocado. El sitio publicado no ha cambiado.