@Lepilov

Как тестировать приложения Flask с помощью unittest?

Решил поразбиратся с написанием тестов для flask приложений. Нужен совет бывалых.
Вот такой простой тест, который должен проверять доступна ли главная страница.

import unittest
import os
from app import app

class BasicTestCase(unittest.TestCase):
    def setUp(self):
        self.app = app.test_client()

    def test_main_page(self):
        response = self.app.get('/', content_type='html/text')
        self.assertEqual(response.status_code, 200)


Почему я получаю OK даже если локально не запущен сервер. По идее мне этот тест нужен, например если на проде отвалился Nginx и висит 502 ошибка.
И второй вопрос по тестированию взаимодействия с БД. У меня postgresql, мне тестировать уже существующую базу, или каждый раз создавать новую и удалять ее после теста?
  • Вопрос задан
  • 1100 просмотров
Пригласить эксперта
Ответы на вопрос 2
@LODIII
Python/SQL developer
мне тестировать уже существующую базу

не всегда сможете привести в первоначальное состояние, насколько это критично.
Например автоинкрементные ключи итд.
Ответ написан
@kdvoryashin
На существующей базе тестировать никогда ничего не надо, это плохая практика.
Во время теста создается тестовая бд, setUp() метод как раз для этого.
Кажется в новых версиях flask перешел на pytest вместо unittest, но принцип один в общем-то.
Рекомендую подробнее почитать документацию (перевод), там очень хорошие примеры по вашему вопросу.

Что касается проверки доступна ли главная страница. Это немного не про юнит тестирование.. Когда вы пытаетесь проверить не отвалился ли сейчас nginx, это больше про мониторинг.

Тесты всегда должны быть изолированы от рабочей среды. Когда вы запускаете тест, он запускает отдельно ваше приложение, на время работы теста.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы