ПРИМЕЧАНИЕ Во время работы тестового сценария Python выводит один символ для
каждого модульного теста после его завершения . Для прошедшего теста выводится
точка; если при выполнении произошла ошибка, выводится символ E, а если не прошла
проверка условия assert, выводится символ F . Вот почему вы увидите другое количество
точек и символов в первой строке вывода при выполнении ваших тестовых сценариев .
Если выполнение тестового сценария занимает слишком много времени, потому что
сценарий содержит слишком много тестов, эти символы дадут некоторое представление
о количестве прошедших тестов .
УПРАЖНЕНИЯ 11.3. Работник: напишите класс
Employee
, представляющий работника. Метод
__init__()
должен получать имя, фамилию и ежегодный оклад; все эти значения должны сохраняться
в атрибутах. Напишите метод
give_raise()
, который по умолчанию увеличивает ежегод-
ный оклад на $5000 — но при этом может получать другую величину прибавки.
Напишите тестовый сценарий для
Employee
. Напишите два тестовых метода,
test_give_
default_raise()
и
test_give_custom_raise()
. Используйте метод
setUp()
, чтобы вам не
приходилось заново создавать экземпляр
Employee
в каждом тестовом метода. Запустите
свой тестовый сценарий и убедитесь в том, что оба теста прошли успешно.
Итоги
В этой главе вы научились писать тесты для функций и классов с использованием
средств модуля
unittest
. Вы узнали, как написать класс, наследующий от
unittest.
TestCase
, и как писать тестовые методы для проверки конкретных аспектов пове-
дения ваших функций и классов. Вы научились использовать метод
setUp()
для
эффективного создания экземпляров и атрибутов, которые могут использоваться
во всех методах для тестирования класса.
Тестирование — важная тема, на которую многие новички не обращают внимания.
Пока вы делаете свои первые шаги в программировании, писать тесты для про-
стых проектов не нужно. Но как только вы начинаете работать над проектами,
требующими значительных затрат ресурсов на разработку, непременно обеспечьте
тестирование критических аспектов поведения ваших функций и классов. С эф-
фективными тестами вы можете быть уверены в том, что изменения в проекте не
повредят тому, что уже работает, а это развяжет вам руки для усовершенствова-
ния кода. Случайно нарушив существующую функциональность, вы немедленно