Тестирование функции
Чтобы потренироваться в тестировании, нам понадобится код. Ниже приведена простая функция, которая получает имя и фамилию и возвращает отформатированное полное имя:
name_function.py
def get_formatted_name(first, last):
. ."""Строит отформатированное полное имя."""
. .full_name = first + ' ' + last
. .return full_name.title()
Функция get_formatted_name() строит полное имя из имени и фамилии, разделив их пробелом, преобразует первый символ каждого слова к верхнему регистру и возвращает полученный результат. Чтобы убедиться в том, что функция get_formatted_name() работает правильно, мы напишем программу, использующую эту функцию. Программа names.py запрашивает у пользователя имя и фамилию и выдает отформатированное полное имя:
names.py
from name_function import get_formatted_name
print("Enter 'q' at any time to quit.")
while True:
. .first = input(" Please give me a first name: ")
. .if first == 'q':
. . . .break
. .last = input("Please give me a last name: ")
. .if last == 'q':
. . . .break
. . . .
. .formatted_name = get_formatted_name(first, last)
. .print(" Neatly formatted name: " + formatted_name + '.')
Программа импортирует функцию get_formatted_name() из модуля name_function.py. Пользователь вводит последовательность имен и фамилий и видит, что программа сгенерировала отформатированные полные имена:
Enter 'q' at any time to quit.
Please give me a first name: janis
Please give me a last name: joplin
Neatly formatted name: Janis Joplin.
Please give me a first name: bob
Please give me a last name: dylan
Neatly formatted name: Bob Dylan.
Please give me a first name: q
Как видно из листинга, имена сгенерированы правильно. Но допустим, вы решили изменить функцию get_formatted_name(), чтобы она также работала со вторыми именами. При этом необходимо проследить за тем, чтобы функция не перестала правильно работать для имен, состоящих только из имени и фамилии. Чтобы протестировать код, можно запустить names.py и для проверки вводить имя из двух компонентов (скажем, Janis Joplin) при каждом изменении get_formatted_name(), но это довольно утомительно. К счастью, Python предоставляет эффективный механизм автоматизации тестирования вывода функций. При автоматизации тестирования get_formatted_name() вы будете уверены в том, что функция успешно работает для всех видов имен, для которых написаны тесты.