Введение
В этом лабораторном задании вы научитесь тестировать приложения Flask с использованием фреймворка pytest. Тестирование является важной частью процесса разработки программного обеспечения, так как помогает гарантировать правильность и надежность вашего приложения. Flask предоставляет утилиты для тестирования, что делает процесс написания тестов для различных частей вашего приложения простым.
Примечание: вам нужно самостоятельно создать файл с кодом и запустить его в среде. Вы можете предварительно просмотреть статус сервиса Flask на Web 5000.
Настройка тестовой среды
Прежде чем начать писать тесты для вашего приложения Flask, вам нужно настроить тестовую среду. Вот шаги по выполнению этого:
Установите фреймворк
pytest, выполнив следующую команду:pip install pytestСоздайте новый файл с именем
conftest.pyв папкеtestsвашего приложения Flask.В файле
conftest.pyимпортируйте необходимые модули:import pytest from my_app import create_appОпределите фикстуру под названием
app, которая создает и настраивает экземпляр приложения:@pytest.fixture() def app(): app = create_app() app.config.update({ "TESTING": True, }) yield appОбратите внимание, что если вы используете паттерн фабрики приложений, вы должны соответствующим образом изменить фикстуру.
Определите фикстуры для тестового клиента и запускатора CLI:
@pytest.fixture() def client(app): return app.test_client() @pytest.fixture() def runner(app): return app.test_cli_runner()
Пишение тестов
Теперь, когда вы настроили тестовую среду, вы можете начать писать тесты для вашего приложения Flask. Вот некоторые примеры общих тестов, которые вы, возможно, захотите написать:
Тестирование маршрута:
def test_hello(client): response = client.get("/") assert response.status_code == 200 assert b"Hello, World!" in response.dataЭтот тест отправляет GET-запрос на корневой маршрут ("/") и проверяет, что код статуса ответа равен 200 и в данных ответа содержится строка "Hello, World!".
Тестирование 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".
Тестирование команды:
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 поможет гарантировать его надежность и стабильность.