qalight
Центр подготовки
IT специалистов
django-small

Разработка Python-Django приложений через тестирование (TDD)

Информацию о курсе уточняйте по телефону либо отправьте заявку.

Описание курса:

Разработка через тестирование (test-driven development) — техника программирования, при которой модульные тесты для программы или её фрагмента пишутся до самой программы и управляют её разработкой.

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

В этом курсе мы рассмотрим функциональное тестирование с Selenium, а также модульное тестирование, и увидим разницу между ними.

Мы освоим рабочий процесс TDD — то, что называется unit-test/code циклом.

Мы также будем проводить рефакторинг кода, и видеть, как это согласуется с TDD.

Мы будем использовать Django, самый популярный в мире Python веб-фреймворк.

Мы также будем использовать систему контроля версий Git.

Требования для прохождения курса:

Знание Python

Также Вы получаете:

diploma-2

Сертификат об окончании

plane-2

Современные и востребованные знания

briefcase-2

Помощь в трудоустройстве

Программа курса:

Модуль 1 : Настройка системы

Установка необходимых инструментов

Требования к системе

Как стартовать новый проект

Виртуальное окружение

Настройка Django

Development и Production окружения

Front End и Backend приложения

Основы Git. Инициализация Git репозитория

Модуль 2: Жизненный цикл TDD

Основы Test-Driven Development

Разновидности тестов

Цикл Red-Green-Refactor

Проверка результатов тестов

Пирамида Тестов

Изоляция тестов от окружения

Структурирование тестов по принципу Arrange-Act-Assert

Legacy код

Brittle  тесты

Рефакторинг

DRY принцип

Модуль 3: Функциональные тесты

Основы Selenium

Набор инструментов Selenium

Работа с Selenium Web Driver

Драйверы, входящие в состав WebDriver

Firefox WebDriver

Использование Selenium для тестирования пользовательских взаимодействий

Метод assert

Метод Setup

Метод tearDown

Навигация

Метод driver.get

Взаимодействие со страницей

Метод send_keys

Методы поиска элементов

Поиск по XPath

Поиск гиперссылок по тексту гиперссылки

Модуль 4: Модульное тестирование

Модульное тестирование, и чем оно отличаются от функциональных тестов

Стандартный модуль Python unittest

Интеграция Django и Selenium

Написание тестов

Юнит тесты для Django

Порядок выполнения тестов

Джанго MVC, URL, и функции представленя

Роутинг urls.py

Модульное тестирование в представлении

Запуск UnitTest

Модуль 5: Явные и неявные ожидания

Ожидания в WebDriver API

Ожидание времени загрузки страницы

Ожидание выполнения JavaScript

Неявные или скрытые(Implicit) ожидания.

Явные(Explicit) ожидания

Создание объекта WebDriverWait

Распараллеливание выполнения тестов

Чистые и грязные тесты

Статус текущей задачи WAIT, WORK, DONE или STOP

Модуль 6. Тестирование в Django

Создание и запуск тестов

Использование UnitTest модуля

Тестовый клиент

Выполнение запросов

Тестовые ответы

Исключения

Сохранение состояния

Базовые классы для создания тестов

Тестирование представлений, шаблонов и URL-адресов с помошью Django Test Client

Автоматическое тестирование. LiveServerTestCase

Конфигурация URLconf

Декоратор @override_settings

Наборы тестов

Покрытие тестами, django-coverage.

Модуль 7. Тестирование макета и стайлинга

Использование CSS фреймворков

Интеграция Bootstrap

Статические файлы в Django

Переключение на StaticLiveServerTestCase

Использование Bootstrap компонентов для улучшения внешнего вида сайта

Использование собственных CSS

Использование collectstatic

Модуль 8. Система шаблонов Django

Использование шаблонов

Наследование шаблонов

Блоки

Теги

Встроенные фильтры

Собственные теги и фильтры шаблона

Ренднринг HTML как шаблонов  внутри представлений

Модуль 9. Работа с формами

Проверка правильности заполнения форм

Предотвращение пустых полей

Перемещение логики валидации внутрь форм

Использование форм в представлениях

Обработка POST запросов внутри форм

Метод сохраниения в формах

Удаление Hardcoded маршрутов

Модуль 10 Тестирование JavaScript в цикле TDD

Функциональный тест для JavaScript

Установка базового JavaScript Test Runner

Использование JQuery и фикстуры

Построение JavaScript Unit Test для обеспечения требуемой функциональности

Модуль 11 Тестирование моделей данных

Тестовая база данных

Джанго ОРМ и класс Модель

Сохранение пользлвательских данных

Подключение форм, для отправки запроса POST

Обработка POST запроса на стороне сервера

Передача Python переменных в шаблон представления

Рендеринг элементов в шаблоне

Регистрация Model в Django Admin

Сохранение POST-запроса в базе данных

Перенаправление после выполнения POST-запроса

Модуль 12. Тестирование миграций

Миграции базы данных

Создание базы данных с помощью миграций

Тестирование миграций, использование ORM

Фикстуры для базы данных.

Автоматическая загрузка фикстур.

Загрузка фикстур с помощью класса TransactionTestCase

Инициализирующий SQL и тесты

Эмуляция отката изменений

Команда для создания фикстур dumpdata

Модуль 13. Система аутентификации пользователя

Проверка существования пользователя

Форма регистрации

Форма входа

Форма выхода

Собственная модедь User

Исследование API форм с помощью Unit Test

Модуль 14. Рефакторинг модели

Разделение шаблонов и представлений

Удаление избыточного кода и тесты

Рефакторинг модели

Фикстуры

Пропуск теста

Оптимизация тестов

Разделение функциональных тестов на несколько файлов

Использование проверки Модель-Слой

Рефакторинг модульных тестов в нескольких файлах

Модульное тестирование модели

Отладка на стороне сервера

Установка секретных переменных окружения на сервере

Модуль 15. Исользование макетов-заглушек в тестировании

Макеты в Mock

Ручные патчи

Библиотека Python Mock

Тестирование внешних зависимостей

Уменьшение дублирования

Подмена функции

Джанго patch-декоратор

Подмена встроенных функций

Сложные подстановки

Цепочки вызова

Комплексное тестирование

Обеспечение изолированых тестов в функциональных тестах

Модуль 16. Использование ModelForm

Переход к Django ModelForm

Тестирование и кастомизация валидации формы

Использование формы в представлении

Использование форм для обработки запросов GET

Глобальный поиск и замена

Использование форм для обработки запросов  POST

Использование форм для отображения ошибок в шаблонах

Использование хелперов для коротких тестов

Использование собственного метода сохранения в представлении

Модуль 17. FT для повторяющихся элементов форм

Предотвращение дубликатов на уровне модели

Порядок QuerySet и строчные представления

Рефакторинг тест модели

Ошибки целостности

Сложные формы —  связанная валидация

Модуль 18. Непрерывная интеграция — Continuous Integration (CI)

Автоматические тесты

Автоматические сборки

Уведомления о проблемах

Интеграцию с баг-трекером и системой контроля версий

Версионирование продукта

Версионирование базы данных

Автоматизированные выкладки и бекапы

Модуль 19. Инструменты непрерывной интеграции

Django Jenkins

Установка Jenkins

Установка плагинов

Настройка Jenkins

Настраиваем взаимодействие с SCM Source Code Management

Интеграция Selenium тестов

QUnit JavaScript тесты в Jenkins с помощью PhantomJS

Модуль 20. Deploying кода

Сценарий развертывания на PythonAnywhere

Git создание тега Новый релиз

Тестирование Deployment

Использование FT для подтверждения работы домена

Развертывание кода вручную

Автоматизация развертывания с помощью Fabric

Создание Virtualenv

Создание базы данных с помощью миграций

Переключение на Gunicorn

Обслуживание статических файлов с помощью Nginx

Читать дальше

Записаться на курс

Разработка Python-Django приложений через тестирование (TDD)

Остались вопросы? Звони!

Python-Django