11.2 测试类
在本章前半部分,你编写了针对单个函数的测试,下面来编写针对类的测试。很多
程序中都会用到类,因此证明你的类能够正确工作大有裨益。如果针对类的测试通
过了,你就能确信对类所做的改进没有意外地破坏其原有的行为。
11.2.1 各种断言方法
Python在unittest.TestCase 类中提供了很多断言方法。前面说过,断言方法检
查你认为应该满足的条件是否确实满足。如果该条件确实满足,你对程序行为的假
设就得到了确认,可以确信其中没有错误。如果你认为应该满足的条件实际上并不
满足,Python将引发异常。
表11-1描述了6个常用的断言方法。使用这些方法可核实返回的值等于或不等于预期
的值,返回的值为True 或False ,以及返回的值在列表中或不在列表中。只能在
继承unittest.TestCase 的类中使用这些方法,随后来看看如何在测试类时使用
其中之一。
11.2.2 一个要测试的类
类的测试与函数的测试相似,你所做的大部分工作是测试类中方法的行为。不过还
是存在一些不同之处,下面编写一个要测试的类。来看一个帮助管理匿名调查的
类:
survey.py
class AnonymousSurvey:
"""收集匿名调查问卷的答案。"""
❶ def __init__(self, question):
"""存储一个问题,并为存储答案做准备。"""
self.question = question
self.responses = []
❷ def show_question(self):
"""显示调查问卷。"""
print(self.question)
❸ def store_response(self, new_response):
"""存储单份调查答卷。"""
self.responses.append(new_response)
❹ def show_results(self):
"""显示收集到的所有答卷。"""
print("Survey results:")
for response in self.responses:
print(f"- {response}")
这个类首先存储了一个调查问题(见❶),并创建了一个空列表,用于存储答案。这
个类包含打印调查问题的方法(见❷),在答案列表中添加新答案的方法(见❸),
以及将存储在列表中的答案都打印出来的方法(见❹)。要创建该类的实例,只需提
供一个问题即可。有了表示调查的实例后,就可使用show_question() 来显示其
中的问题,使用store_response() 来存储答案并使用show_results() 来显
示调查结果。
为证明AnonymousSurvey 类能够正确工作,编写一个使用它的程序:
language_survey.py
from survey