Тестирование функции

We use cookies. Read the Privacy and Cookie Policy

Чтобы потренироваться в тестировании, нам понадобится код. Ниже приведена простая функция, которая получает имя и фамилию и возвращает отформатированное полное имя:

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() вы будете уверены в том, что функция успешно работает для всех видов имен, для которых написаны тесты.