Contrôler les parcours nécessaires aux visiteurs

PythonBeginner
Pratiquer maintenant

Introduction

FIELDNOTES est un petit musée de démonstration. Les visiteurs découvrent une exposition, trouvent son entrée et téléchargent un guide à consulter hors ligne. Avant de modifier ce site, il faut des contrôles qui reconnaissent une visite complète, au-delà d'une simple réponse correcte de la page d'accueil.

Vous compléterez un petit test Python, montrerez qu'il accepte un paquet valide et rejetterez des téléchargements absents ou trompeurs. Une connaissance élémentaire du terminal suffit ; les notions Python et HTTP sont expliquées ici. Aucun développement du site, compte externe ou logiciel à installer n'est nécessaire. Le musée et son adresse sont fictifs.

Live Website est le site actuel sur le port 8081. Candidate Preview est un aperçu indépendant sur le port 8082. Workstation est le terminal préparé dans /home/labex/project/release-gate. Chaque unité commence indépendamment ; les aperçus ne modifient jamais le site publié.

Contrôler le parcours complet du visiteur

Dans cette étape, vous transformerez un besoin réel en contrôle automatique et montrerez que celui-ci distingue les paquets valides des paquets défectueux. Commencez dans Live Website.

Comprendre le service normal

Ouvrez Explore the exhibition ↗, lisez Close to home, puis choisissez Plan your visit ↗. La page indique Entrance: East gate. Choisissez Download visitor guide ↓ et ouvrez le texte téléchargé : il doit aussi contenir Entrance: East gate. Un téléchargement est un fichier enregistré par le navigateur ; son emplacement dépend des paramètres de téléchargement. Revenez à l'accueil avec FIELDNOTES. Ouvrez aussi Visit puis Step-free route ↗ ; la page d'accessibilité et son téléchargement décrivent Garden ramp. Ces fonctions doivent rester disponibles.

Passez dans Workstation. ls liste les noms d'un répertoire ; cat affiche un fichier :

ls

Vous devez trouver packages, drafts, live, preview, tests.py, pipeline.sh et tools.py. Un paquet est un ensemble de fichiers enregistré ; .tar.gz est son format d'archive compressée. drafts/ est une copie de travail modifiable. tools.py est l'exécuteur local fourni, et non un service de CI hébergé.

cat tests.py

HTTP est le protocole de requête et de réponse du navigateur. 200 indique une réponse réussie ; 404 signifie que la ressource demandée est introuvable. Un 200 contenant la mauvaise entrée reste un échec pour le visiteur. Une erreur de connexion signifie qu'aucune réponse utilisable n'a été reçue.

Compléter le contrôle du contenu

python3 exécute du code Python. La fonction fournie read(base, path) demande le chemin et renvoie son texte. base est l'adresse du serveur temporaire choisie par l'exécuteur. def définit une fonction ; les lignes indentées lui appartiennent. with ferme la réponse après lecture. assert condition, 'message' provoque un échec si la condition est fausse. in recherche le texte attendu dans la réponse. Le texte entre guillemets est littéral. = affecte une valeur ; + assemble du texte. Seule l'assertion du guide manque, mais le petit fichier complet est fourni pour faciliter une modification fiable.

cat > tests.py remplace le fichier. <<'PYTHON' commence un here-document : collez tout le bloc, jusqu'au dernier PYTHON seul sur sa ligne. Les guillemets préservent le code littéralement. Respectez exactement l'indentation :

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 page utilise href="downloads/guide.txt", un lien relatif. Depuis /visit.html, il se résout en /downloads/guide.txt. Un lien commençant par / part de la racine du site. Contrôlez le vrai lien et son contenu cible ; tester une autre URL inutilisée pourrait manquer l'échec rencontré par le visiteur.

Valider le test avant de lui faire confiance

L'action check extrait un paquet dans un répertoire temporaire, démarre un vrai serveur HTTP et appelle check(base). Elle conserve les octets approuvés pour la suite. Elle ne publie ni ne répare le paquet :

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

Attendez PASS: visitor checks. Frozen package .... L'identifiant final varie. Si Python signale SyntaxError ou IndentationError, le test lui-même est incorrect ; réécrivez le bloc et réessayez d'abord la référence valide avant de juger un candidat.

Exécutez deux échecs intentionnels :

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

Attendez FAIL: HTTP Error 404: File not found : le téléchargement manque. Continuez dans le même terminal ; cet échec ne le ferme pas.

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

Attendez FAIL: Wrong visitor guide content. Ce candidat renvoie 200, mais dirige les visiteurs vers la mauvaise entrée. Ne supprimez pas l'assertion pour le faire réussir. Un test qui rejette la référence ou accepte ce candidat n'est pas utile.

Comparer les observations du navigateur

preview sélectionne uniquement les fichiers de Candidate Preview :

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

Passez dans Candidate Preview et rechargez. Ouvrez l'exposition, puis Plan your visit. La page indique toujours East gate, mais le guide téléchargé indique West gate. Cette différence explique l'utilité de l'assertion de contenu.

Retournez dans Workstation et sélectionnez l'aperçu du bon candidat :

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

Dans Candidate Preview, revenez à l'accueil, rechargez et répétez la visite et le téléchargement ; les deux indiquent maintenant East gate. Dans Live Website, le site initial fonctionne toujours. Vous avez testé le comportement métier sans publier les mauvais candidats. Télécharger dans le navigateur n'exécute pas le contrôle automatique ; les deux observations apportent des preuves différentes.

Résumé

Vous avez contrôlé le parcours du visiteur, complété une assertion de contenu et distingué un téléchargement absent d'une réponse réussie contenant de mauvaises informations. Le site publié est resté inchangé.