приложений. Начнем с unittest (https://docs.python.org/3/library/unittest.html). Мы на-
пишем модуль, который записывает слова с прописной буквы. Наша первая
версия будет использовать стандартную строковую функцию capitalize(), что, как
вы увидите, приведет к неожиданным результатам. Сохраните этот
этот файл
этот файл под
файл под име-
под име-
нем cap.py:
def just_do_it(text):
return text.capitalize()
Основная идея тестирования заключается в том, чтобы понять, какой результат
вы хотите получить при определенных входных данных (в нашем примере вы
хотите получить текст, который ввели, записанным с прописной буквы), отправить
результат функции тестирования, а затем проверить, получен ли ожидаемый
результат. Ожидаемый результат называется утверждением (assertion), поэтому
в рамках пакета unittest вы проверяете результат с помощью методов, чьи имена
начинаются со слова assert, например assertEqual, показанного в следующем
примере.
Сохраните этот сценарий тестирования под именем test_cap.py:
import unittest
import cap
class TestCap(unittest.TestCase):
def setUp(self):
pass
def tearDown(self):
pass
def test_one_word(self):
text = 'duck'
result = cap.just_do_it(text)
self.assertEqual(result, 'Duck')
def test_multiple_words(self):
text = 'a veritable flock of ducks'
result = cap.just_do_it(text)
self.assertEqual(result, 'A Veritable Flock Of Ducks')
if __name__ == '__main__':
unittest.main()
Перед каждым методом тестирования вызывается метод setUp(), а после каж-
дого из методов тестирования — метод tearDown(). Задачей этих методов является
выделение и освобождение внешних ресурсов, необходимых для тестов, вроде
356
Глава 12. Быть питонщиком
соединения с базой данных или создания некоторых тестовых данных. В нашем
случае тесты автономны, и нам даже не нужно определять методы setUp() и tearDown(),
однако создать их пустые версии не повредит. Сердцем наших тестов являются две
функции с именами test_one_word() и test_multiple_words(). Каждая из них запу-
скает определенную нами функцию just_do_it() с разными входными параметрами
и проверяет, получен ли ожидаемый результат.
О’кей, запустим тест. Эта команда вызовет два наших метода тестирования: