Testando Aplicações Flask

Beginner

This tutorial is from open-source community. Access the source code

Introdução

Neste laboratório, você aprenderá como testar aplicações Flask utilizando o framework pytest. Testar é uma parte importante do processo de desenvolvimento de software, pois ajuda a garantir a correção e a confiabilidade da sua aplicação. O Flask fornece utilitários para testes, facilitando a escrita de testes para diferentes partes da sua aplicação.

Nota: Você precisa criar o arquivo de código você mesmo e executá-lo no ambiente. Você pode visualizar o status do serviço Flask na Web 5000.

Configurando o Ambiente de Teste

Antes de começar a escrever testes para sua aplicação Flask, você precisa configurar o ambiente de teste. Aqui estão os passos para fazer isso:

  1. Instale o framework pytest executando o seguinte comando:

    pip install pytest
  2. Crie um novo arquivo chamado conftest.py na pasta tests da sua aplicação Flask.

  3. No arquivo conftest.py, importe os módulos necessários:

    import pytest
    from my_app import create_app
  4. Defina uma fixture chamada app que cria e configura uma instância da aplicação:

    @pytest.fixture()
    def app():
        app = create_app()
        app.config.update({
            "TESTING": True,
        })
        yield app

    Observe que, se você estiver usando um padrão de fábrica de aplicações (application factory pattern), você deve modificar a fixture de acordo.

  5. Defina fixtures para o cliente de teste e o executor de CLI (CLI runner):

    @pytest.fixture()
    def client(app):
        return app.test_client()
    
    @pytest.fixture()
    def runner(app):
        return app.test_cli_runner()

Escrevendo Testes

Agora que você configurou o ambiente de teste, pode começar a escrever testes para sua aplicação Flask. Aqui estão alguns exemplos de testes comuns que você pode querer escrever:

  1. Testar uma rota:

    def test_hello(client):
        response = client.get("/")
        assert response.status_code == 200
        assert b"Hello, World!" in response.data

    Este teste envia uma requisição GET para a rota raiz ("/") e verifica se o código de status da resposta é 200 e se os dados da resposta contêm a string "Hello, World!".

  2. Testar uma requisição POST:

    def test_login(client):
        response = client.post("/login", data={"username": "test", "password": "pass"})
        assert response.status_code == 200
        assert b"Logged in successfully" in response.data

    Este teste envia uma requisição POST para a rota de login ("/login") com dados de formulário contendo um nome de usuário e senha. Ele verifica se o código de status da resposta é 200 e se os dados da resposta contêm a string "Logged in successfully".

  3. Testar um comando:

    def test_hello_command(runner):
        result = runner.invoke(args=["hello"])
        assert result.exit_code == 0
        assert "Hello, World!" in result.output

    Este teste invoca um comando chamado "hello" e verifica se o comando sai com um código 0 e se a saída contém a string "Hello, World!".

Executando os Testes

Para executar os testes, navegue até a pasta raiz da sua aplicação Flask no terminal e execute o seguinte comando:

pytest

Este comando irá descobrir e executar todos os testes na pasta tests. Você deverá ver os resultados dos testes na saída do terminal.

Resumo

Neste laboratório, você aprendeu como testar aplicações Flask usando o framework pytest. Você configurou o ambiente de teste, escreveu testes para diferentes partes da sua aplicação e executou os testes para verificar a correção do seu código. Testar é uma parte essencial do processo de desenvolvimento de software, e escrever testes para sua aplicação Flask ajudará a garantir sua confiabilidade e estabilidade.