кода больше чем на общем дизайне • К моменту написания тестов разработчик уже устает • Тесты пишутся уже с учетом особенностей реализации, в том числе и костылей, если таковые присутствуют
написания кода после тестов появляются дополнительные стимулы: – Четко поставленная цель: пройти все тесты – Каждый пройденный тест – достижение – Это поддерживает положительный настрой
Глобальные вещи (views) -> API, DAO -> утилитарные методы • Проще показать на примере Сделаем виртуальную библиотеку. Книга - название, автор, ISBN Читатель Чтобы получить билет, надо зарегистрироваться. Для простоты, в качестве номера будем использовать django.contrib.auth.models.User.id Читатели могут брать/сдавать книги, но не более 2х одновременно. Если книгу кто-то взял, то другому ее не получить. Брать книги можно по: • 1. Название+Автор • 2. ISBN
def test_get_book_view__taken(self): """ Попробуем взять книгу, которую уже унес кто-то """ def test_get_book_view__again(self): """ Попробуем взять одну и ту же книгу дважды """ def test_get_book_view__unknown(self): """ Попробуем взять книгу, которой нет в библиотеке """ #... #Возврат книги, возврат не взятой книги, #возврат книги не из библиотеки
чтобы решить ситуации, описанные выше """ def test_get_book_by_isbn(self): """ Получаем их базы книгу по isbn """ def test_get_book_by_title_and_author(self): """ Получаем из базы книгу по isbn """ def test_user_has_book(self): """ Есть ли эта книга у читателя """
Как следствие - более чистый код • Возможно, более быстрая реализация • Лучшее покрытие тестами (как по качеству, так и по количеству) • Дополнительный источник мотивации в процессе • Более отчуждаемый код • Меньше багов, а значит и меньше итераций «QA- багфиксинг»