Тестирование приложений Flask

FlaskFlaskBeginner
Практиковаться сейчас

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном задании вы научитесь тестировать приложения Flask с использованием фреймворка pytest. Тестирование является важной частью процесса разработки программного обеспечения, так как помогает гарантировать правильность и надежность вашего приложения. Flask предоставляет утилиты для тестирования, что делает процесс написания тестов для различных частей вашего приложения простым.

Примечание: вам нужно самостоятельно создать файл с кодом и запустить его в среде. Вы можете предварительно просмотреть статус сервиса Flask на Web 5000.

Настройка тестовой среды

Прежде чем начать писать тесты для вашего приложения Flask, вам нужно настроить тестовую среду. Вот шаги по выполнению этого:

  1. Установите фреймворк pytest, выполнив следующую команду:

    pip install pytest
  2. Создайте новый файл с именем conftest.py в папке tests вашего приложения Flask.

  3. В файле conftest.py импортируйте необходимые модули:

    import pytest
    from my_app import create_app
  4. Определите фикстуру под названием app, которая создает и настраивает экземпляр приложения:

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

    Обратите внимание, что если вы используете паттерн фабрики приложений, вы должны соответствующим образом изменить фикстуру.

  5. Определите фикстуры для тестового клиента и запускатора CLI:

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

Пишение тестов

Теперь, когда вы настроили тестовую среду, вы можете начать писать тесты для вашего приложения Flask. Вот некоторые примеры общих тестов, которые вы, возможно, захотите написать:

  1. Тестирование маршрута:

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

    Этот тест отправляет GET-запрос на корневой маршрут ("/") и проверяет, что код статуса ответа равен 200 и в данных ответа содержится строка "Hello, World!".

  2. Тестирование 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

    Этот тест отправляет POST-запрос на маршрут входа ("/login") с данными формы, содержащими имя пользователя и пароль. Он проверяет, что код статуса ответа равен 200 и в данных ответа содержится строка "Logged in successfully".

  3. Тестирование команды:

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

    Этот тест вызывает команду с именем "hello" и проверяет, что команда завершается с кодом 0 и в выводе содержится строка "Hello, World!".

Запуск тестов

Для запуска тестов перейдите в корневую папку вашего приложения Flask в терминале и выполните следующую команду:

pytest

Эта команда обнаружит и запустит все тесты в папке tests. Вы должны увидеть результаты тестирования в выводе терминала.

Резюме

В этом лабораторном задании вы узнали, как тестировать приложения Flask с использованием фреймворка pytest. Вы настроили тестовую среду, написали тесты для различных частей вашего приложения и запустили тесты, чтобы проверить правильность вашего кода. Тестирование является важной частью процесса разработки программного обеспечения, и написание тестов для вашего приложения Flask поможет гарантировать его надежность и стабильность.