229 УПРАЖНЕНИЯ 11.1. Город, страна: напишите функцию, которая получает два параметра: название страны
и название города. Функция должна возвращать одну строку в формате «Город, Страна» —
например, «Santiago, Chile». Сохраните функцию в модуле с именем
city_functions .py
.
Создайте файл
test_cities .py
для тестирования только что написанной функции (не забудьте
импортировать unittest и тестируемую функцию). Напишите метод
test_city_country()
для проверки того, что вызов функции с такими значениями, как
'santiago'
и
'chile'
, дает
правильную строку. Запустите
test_cities .py
и убедитесь в том, что тест
test_city_country()
проходит успешно.
11.2. Население: измените свою функцию так, чтобы у нее был третий обязательный пара-
метр — население. В новой версии функция должна возвращать одну строку вида «Santiago,
Chile — population 5 000 000». Снова запустите программу
test_cities .py
. Убедитесь в том, что
тест
test_city_country()
на этот раз не проходит.
Измените функцию так, чтобы параметр населения стал необязательным. Снова запустите
test_cities .py
и убедитесь в том, что тест
test_city_country()
снова проходит успешно.
Напишите второй тест
test_city_country_population()
, который проверяет вызов функ-
ции со значениями
'santiago'
,
'chile'
и
'population=5000000'
. Снова запустите
test_cities .
py
и убедитесь в том, что новый тест проходит успешно.
Тестирование класса
В первой части этой главы мы писали тесты для отдельной функции. Сейчас мы
займемся написанием тестов для класса. Классы будут использоваться во многих
ваших программах, поэтому возможность доказать, что ваши классы работают
правильно, будет безусловно полезной. Если тесты для класса, над которым вы
работаете, проходят успешно, вы можете быть уверены в том, что дальнейшая
доработка класса не приведет к случайному нарушению его текущего поведения.
Разные методы assert
Класс
unittest.TestCase
содержит целое семейство проверочных методов
assert
.
Как упоминалось ранее, эти методы проверяют, выполняется ли условие, которое
должно выполняться в определенной точке вашего кода. Если условие истинно,
как и предполагалось, то ваши ожидания относительно поведения части вашей
программы подтверждаются; вы можете быть уверены в отсутствии ошибок. Если
же условие, которое должно быть истинным, окажется ложным, то Python выдает
исключение.
В табл. 11.1 перечислены шесть часто используемых методов
assert
. С их помощью
можно проверить, что возвращаемые значения равны или не равны ожидаемым,
что значения равны
True
или
False
или что значения входят или не входят в задан-
ный список. Эти методы могут использоваться только в классах, наследующих от
unittest.TestCase
; рассмотрим пример использования такого метода в контексте
тестирования реального класса.