228
Глава 11 •
Тестирование
Добавление
новых тестов
Теперь мы знаем, что
get_formatted_name()
работает для простых имен, и можем на-
писать второй тест для имен из трех компонентов. Для этого в класс
NamesTestCase
добавляется еще один метод:
test_name_function.py
...
class NamesTestCase(unittest.TestCase):
"""Тесты для 'name_function.py'."""
def test_first_last_name(self):
...
def test_first_last_middle_name(self):
"""Работают ли
такие имена, как 'Wolfgang Amadeus Mozart'?"""
❶
formatted_name = get_formatted_name(
'wolfgang', 'mozart', 'amadeus')
self.assertEqual(formatted_name, 'Wolfgang Amadeus Mozart')
if __name__ == '__main__':
unittest.main()
Новому методу присваивается имя
test_first_last_middle_name()
. Имя метода
должно начинаться с
test_
, чтобы этот метод выполнялся автоматически при за-
пуске
test_name_function .py
. В остальном имя выбирается так, чтобы оно четко пока-
зывало, какое именно поведение
get_formatted_name()
мы тестируем. В результате
при сбое теста вы сразу видите, к каким именам он относится. Не нужно опасаться
длинных имен методов в классах
TestCase
: имена должны быть содержательными,
чтобы донести информацию до разработчика в случае сбоя, а поскольку Python
вызывает их автоматически, вам никогда не придется вручную вводить эти имена
при вызове.
Чтобы протестировать функцию, мы вызываем
get_formatted_name()
c тремя
компонентами
, после чего используем
assertEqual()
для проверки того, что
возвращенное полное имя совпадает с ожидаемым. При повторном запуске
test_
name_function .py
оба теста проходят успешно:
..
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK
Отлично! Теперь мы знаем, что функция по-прежнему работает с именами из двух
компонентов, как
Janis
Joplin
, но можем быть уверены в том, что она сработает
и для
имен с тремя компонентами,
такими как
Wolfgang
Amadeus
Mozart
.