Тестирование
класса
233
Неплохо, но опрос с одним ответом вряд ли можно назвать полезным. Убедимся
в том, что три ответа сохраняются правильно. Для этого в
TestAnonymousSurvey
добавляется еще один метод:
import unittest
from survey import AnonymousSurvey
class TestAnonymousSurvey(unittest.TestCase):
"""Тесты для класса AnonymousSurvey"""
def test_store_single_response(self):
...
def test_store_three_responses(self):
"""Проверяет, что три ответа были сохранены правильно."""
question = "What language did you first learn to speak?"
my_survey = AnonymousSurvey(question)
❶
responses = ['English', 'Spanish', 'Mandarin']
for response in responses:
my_survey.store_response(response)
❷
for response in responses:
self.assertIn(response, my_survey.responses)
if __name__ == '__main__':
unittest.main()
Новому методу присваивается имя
test_store_three_responses()
. Мы создаем
объект опроса по аналогии с тем, как это делалось в
test_store_single_response()
.
Затем определяется список, содержащий три разных ответа
, и для каждого из
этих ответов вызывается метод
store_response()
. После того как ответы будут
сохранены, следующий цикл проверяет, что каждый ответ теперь присутствует
в
my_survey.responses
.
Если снова запустить
test_survey .py
, оба теста (для одного ответа и для трех ответов)
проходят успешно:
..
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK
Все прекрасно работает. Тем не менее тесты выглядят немного однообразно, по-
этому мы воспользуемся еще одной возможностью
unittest
для повышения их
эффективности.
Метод setUp()
В программе
test_survey .py
в каждом тестовом методе создавался новый экземпляр
AnonymousSurvey
, а также новые ответы. Класс
unittest.TestCase
содержит метод