编写代码测试,对AnonymousSurvey 类的行为的一个方面进行验证:如果用户面对调查问题时只提供了一个答案,这个答案也能被妥善地存储。为此,我们将在这个答案被存储后,使用方法assertIn()来核实它被包含在答案列表中。
test_surcey.py
# -*- coding: utf-8 -*-
import unittest
from survey import AnonymousSurvey
class TestAnonymousSurvey(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()
测试结果:
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
Process finished with exit code 0
从结果可以看到测试通过了。其中我们定义了一个类TestAnonymousSurvey,它继续了测试类unittest.TestCase的方法和属性,代码中的方法assertIn用来检查English 是否包含在列表my_survey.responses 中,以核实这个答案是否被妥善地存储了。为了测试输入多个答案是,测试类 AnonymousSurvey是否能正常运行。修改代码如下:从结果可以看到这两个测试都通过了。
其中第20行代码使用for循环遍历预料的答案并存储起来,在23行也使用一个for循环是为了使用方法assertIn核实存储的答案。