Тестирование класса
219
Реализация таких изменений грозит повлиять на текущее поведение класса
AnonymousSurvey
. Например, может оказаться, что поддержка ввода нескольких
ответов случайно повлияет на процесс обработки одиночных ответов. Чтобы га-
рантировать, что доработка модуля не нарушит существующего поведения, для
класса нужно написать тесты.
Тестирование
класса AnonymousSurvey
Напишем тест, проверяющий всего один аспект поведения
AnonymousSurvey
. Этот
тест будет проверять, что один ответ на опрос сохраняется правильно. После того
как метод будет сохранен, метод
assertIn()
проверяет, что он действительно на-
ходится в списке ответов:
test_survey.py
import unittest
from survey import AnonymousSurvey
class TestAnonmyousSurvey(unittest.TestCase):
"""Тесты для класса AnonymousSurvey"""
def test_store_single_response(self):
"""Проверяет, что один ответ сохранен правильно."""
question = "What language did you first learn to speak?"
my_survey = AnonymousSurvey(question)
my_survey.store_response('English')
self.assertIn('English', my_survey.responses)
unittest.main()
Программа начинается с импортирования модуля
unittest
и тестируемого класса
AnonymousSurvey
. Тестовый сценарий
TestAnonymousSurvey
, как и в предыдущих
случаях, наследует от
unittest.TestCase
. Первый тестовый метод проверяет, что
сохраненный ответ действительно попадает в список ответов опроса. Этому методу
присваивается хорошее содержательное имя
test_store_single_response()
.
Если тест не проходит, имя метода в выходных данных сбойного теста ясно пока-
зывает, что проблема связана с сохранением отдельного ответа на опрос.
Чтобы протестировать поведение класса, необходимо создать экземпляр класса.
В точке
создается экземпляр с именем
my_survey
для вопроса
"What
language
did
you
first
learn
to
speak?"
, Один ответ (
English
) сохраняется с использова-
нием метода
store_response()
. Затем программа убеждается в том, что ответ был
сохранен правильно; для этого она проверяет, что значение
English
присутствует
в списке
my_survey.responses
.
При запуске программы
test_survey .py
тест проходит успешно:
.
----------------------------------------------------------------------
Ran 1 test in 0.001s
OK