Как написать модульный тест для веб-приложения на Flask-е?

Рейтинг: 1Ответов: 1Опубликовано: 25.04.2015

Привет,

Пишу свое первое WEB-приложение на Python 3.4 с применением Flask-a. Опираюсь в основном на книгу "Flask Web Development" Мигеля Гринберга(ISBN: 978-1-449-37262-0) и официальную документацию по Flask.

Сейчас пытаюсь написать первые тесты с применением unittest.TestCase и есть несколько моментов которые мне непонятны:

  1. В книге Мигеля на странице 76, там где у него несколько классов конфигураций. Зачем он ввел TestingConfig.TESTING, DevelopemntConfig.DEBUG ? Не увидел чтобы эти константы где-либо использовались.
  2. Правильно ли понимаю, что для того чтобы послать HTTP GET/POST и др. запрос к приложению, то я должен получать тестовый клиент self.app.test_client() ?

UPD:

  1. Если п.2 говорит, что "да", нужно получать тестовый клиент, тогда это означает что в каждом setUp()-методе я должен создавать instanse Flask-а, т.е. "app = myapplication.create_app('testing')" с последующим получением тест.клиента self.app.test_client(). Не будет ли создание app с помощью create_app() в каждом setUp()-методе замедлять работу тестов?

Возможно есть более правильные способы написания модульных тестов. Тогда прошу опытных поделиться знаниями

UPD:

В моем приложении использую следующий подход создания instance Flask-a: Factories & Extensions. То есть с помощью функции create_app(configName)

Ответы

▲ 1
  1. Строго говоря, эти «константы» могут и не проверяться в тестах — это параметры с которыми будет сконфигурировано приложение. Однако же проверка TESTING есть на странице 83.

    Режим TESTING отключит отлов ошибок при обработке запросов и этим поможет получать более корректную информацию в тестах.

    Режим DEBUG перезагружает локальный сервер разработки автоматически и предоставляет средства отладки.

  2. Да. Обычно обращение идёт к self.app, указывающему на someapp.app.test_client().

  3. Нет. В setUp вы получаете клиента для тестов. Экземпляр приложения (someapp.app) у вас на этот момент уже создан.