УПРАЖНЕНИЯ
10-11 . Любимое число: напишите программу, которая запрашивает у пользователя его лю-
бимое число . Воспользуйтесь функцией json .dump() для сохранения этого числа в файле .
Напишите другую программу, которая читает это значение и выводит сообщение: «Я знаю
ваше любимое число! Это _____» .
10-12 . Сохраненное любимое число: объедините две программы из упражнения 10-11
в один файл . Если число уже сохранено, сообщите его пользователю, а если нет — запро-
сите любимое число пользователя и сохраните в файле . Выполните программу дважды,
чтобы убедиться в том, что она работает .
10-13 . Проверка пользователя: последняя версия remember_me .py предполагает, что поль-
зователь либо уже ввел свое имя, либо программа выполняется впервые . Ее нужно из-
менить на тот случай, если текущий пользователь не является тем человеком, который
последним использовал программу .
Прежде чем выводить приветствие в greet_user(), спросите пользователя, правильно
ли определено имя пользователя . Если ответ будет отрицательным, вызовите get_new_
username() для получения правильного имени пользователя .
Итоги
В этой главе вы научились работать с файлами. Вы узнали, как прочитать сразу весь
файл и как читать его содержимое по строкам. Вы научились записывать в файл
и присоединять текст в конец файла, познакомились с исключениями и средствами
обработки исключений, возникающих в программе. В завершающей части главы
рассматриваются структуры данных Python для сохранения введенной информа-
ции, чтобы пользователю не приходилось каждый раз вводить данные заново при
каждом запуске программы.
В главе 11 мы займемся эффективной организацией тестирования вашего кода. Те-
стирование поможет убедиться в том, что написанный код работает правильно, а так-
же выявит ошибки, внесенные в процессе расширения уже написанных программ.
11
Тестирование
Вместе с функциями и классами вы также можете написать тесты для своего кода.
Тестирование доказывает, что код работает так, как положено, для любых разно-
видностей входных данных, которые он может получать. Тесты позволят вам быть
уверенным в том, что код будет работать правильно и тогда, когда вашими про-
граммами станут пользоваться другие люди. Тестирование при добавлении нового
кода гарантирует, что внесенные изменения не повлияют на текущее поведение
программы. Все программисты допускают ошибки, поэтому каждый программист
должен часто тестировать свой код и выявлять ошибки до того, как с ними столк-
нутся другие пользователи.
В этой главе вы научитесь тестировать код средствами модуля Python
unittest
.
Вы узнаете, как построить тестовые сценарии, как проверить, выдает ли программа
для конкретных входных данных ожидаемый результат и как тестировать функ-
ции и классы. Также вы научитесь оценивать, сколько тестов нужно написать для
проекта.
Тестирование функции
Чтобы потренироваться в тестировании, нам понадобится код. Ниже приведена
простая функция, которая получает имя и фамилию и возвращает отформатиро-
ванное полное имя:
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
Тестирование функции
211
print("Enter 'q' at any time to quit.")
while True:
first = input("\nPlease 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("\tNeatly formatted name: " + formatted_name + '.')
Программа импортирует функцию
g e t _ f o r m a t t e d _ n a m e ( )
из модуля
name_function .py
. Пользователь вводит последовательность имен и фамилий
и видит, что программа сгенерировала отформатированные полные имена:
Enter 'q' at any time to quit.
Please give me a first name:
Достарыңызбен бөлісу: |