Verificar os caminhos necessários aos visitantes

PythonBeginner
Pratique Agora

Introdução

FIELDNOTES é um pequeno museu de demonstração. Os visitantes exploram uma exposição, encontram a entrada e baixam um guia para ler sem conexão. Antes de alterar o site, você precisa de verificações que reconheçam uma visita completa, além de uma resposta bem-sucedida da página inicial.

Você completará um pequeno teste Python, demonstrará que ele aceita um pacote funcional e rejeitará downloads ausentes ou enganosos. Basta familiaridade básica com o terminal; os detalhes de Python e HTTP são explicados aqui. Não é necessário desenvolver o site, instalar programas ou criar contas externas. O museu e o endereço são fictícios.

Live Website é o site atual na porta 8081. Candidate Preview é uma prévia independente na porta 8082. Workstation é o terminal preparado em /home/labex/project/release-gate. Cada unidade começa de forma independente; as prévias nunca alteram o site publicado.

Verificar o percurso completo do visitante

Nesta etapa, você transformará uma necessidade real do visitante em uma verificação automática e demonstrará que ela distingue pacotes corretos e defeituosos. Comece em Live Website.

Entender o serviço normal

Abra Explore the exhibition ↗, leia Close to home e escolha Plan your visit ↗. A página indica Entrance: East gate. Selecione Download visitor guide ↓ e abra o texto baixado: ele também deve conter Entrance: East gate. Um download é um arquivo salvo pelo navegador; sua localização depende das configurações de download. Volte ao início por FIELDNOTES. Abra também Visit e Step-free route ↗; a página de acesso e seu download descrevem Garden ramp. Essas funções devem permanecer disponíveis.

Mude para Workstation. ls lista os nomes de um diretório; cat mostra um arquivo:

ls

Você deve encontrar packages, drafts, live, preview, tests.py, pipeline.sh e tools.py. Um pacote é uma coleção salva de arquivos; .tar.gz é seu formato de arquivo compactado. drafts/ é uma cópia de trabalho editável. tools.py é o executor local fornecido, não um serviço de CI hospedado.

cat tests.py

HTTP é o protocolo de requisição e resposta usado pelo navegador. 200 indica uma resposta bem-sucedida; 404, que o recurso solicitado não foi encontrado. Um 200 com a entrada errada continua sendo uma falha para o visitante. Um erro de conexão significa que nenhuma resposta utilizável chegou.

Completar a verificação do conteúdo

python3 executa código Python. A função fornecida read(base, path) solicita o caminho e devolve seu texto. base é o endereço do servidor temporário escolhido pelo executor. def define uma função; as linhas recuadas pertencem a ela. with fecha a resposta depois da leitura. assert condition, 'message' interrompe com falha quando a condição é falsa. in verifica se o texto esperado aparece na resposta. O texto entre aspas é literal. = atribui um valor; + junta textos. Só falta adicionar a asserção do guia, mas o pequeno arquivo completo está abaixo para uma edição confiável.

cat > tests.py substitui o arquivo. <<'PYTHON' inicia um here-document: cole o bloco inteiro até o último PYTHON, sozinho em sua linha. As aspas preservam o código literalmente. Mantenha exatamente o recuo mostrado:

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

A página usa href="downloads/guide.txt", um link relativo. A partir de /visit.html, ele resulta em /downloads/guide.txt. Um link iniciado por / parte da raiz do site. Verifique tanto o link real quanto o conteúdo de destino; testar outra URL não utilizada pode deixar passar a falha enfrentada pelo visitante.

Validar o teste antes de confiar nele

A ação check extrai um pacote em um diretório temporário, inicia um servidor HTTP real e chama check(base). Os bytes aprovados ficam preservados para uso posterior. Ela não publica nem corrige o pacote:

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

Espere PASS: visitor checks. Frozen package .... O identificador final varia. Se Python mostrar SyntaxError ou IndentationError, o próprio teste está errado. Reescreva o bloco e tente primeiro a referência sabidamente correta antes de julgar um candidato.

Execute duas falhas intencionais:

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

Espere FAIL: HTTP Error 404: File not found: falta o download. Continue no mesmo terminal; a falha não o fecha.

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

Espere FAIL: Wrong visitor guide content. Esse candidato retorna 200, mas leva os visitantes à entrada errada. Não remova a asserção para fazê-lo passar. Um teste que rejeita a referência ou aceita esse candidato não é útil.

Comparar a evidência do navegador

preview seleciona arquivos apenas para Candidate Preview:

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

Mude para Candidate Preview e recarregue. Abra a exposição e depois Plan your visit. A página ainda indica East gate, mas o guia baixado diz West gate. Essa diferença explica a importância da asserção de conteúdo.

Volte para Workstation e selecione a prévia do candidato correto:

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

Em Candidate Preview, volte ao início, recarregue e repita a visita e o download; agora ambos indicam East gate. Em Live Website, o site original continua funcionando. Você testou o comportamento sem publicar nenhum candidato defeituoso. Um download no navegador não executa a verificação automática; as duas observações fornecem evidências diferentes.

Resumo

Você verificou o percurso do visitante, completou uma asserção de conteúdo e distinguiu um download ausente de uma resposta bem-sucedida com texto errado. O site publicado permaneceu inalterado.