11.3.3 给AnonymousSurvey类来场"灵魂拷问"
测试代码就像给程序做体检,今天我们就来给AnonymousSurvey类做个全面检查。
先来个简单的"单挑"测试,看看它能不能正确处理单个答案。test_survey.py
from survey import AnonymousSurvey
def test_store_single_response():
"""测试这个调查类是不是连一个答案都记不住"""
question = "你学会的第一门语言是什么?"
my_survey = AnonymousSurvey(question)
my_survey.store_response('Python') # 当然要选Python啦!
assert 'Python' in my_survey.responses # 要是连这个都记不住,那真是没救了
这个测试就像在问:
"嘿,你能记住我说的话吗?"
我们创建了一个调查问题,存了一个答案(Python程序员的最爱),然后检查它是不是真的记住了。
运行测试时,可以像点菜一样指定要跑哪个测试文件:
$ pytest test_survey.py
看到绿色的"."(表示通过)时,我们就可以放心地喝口咖啡了。
不过,只会记一个答案的调查问卷也太寒酸了吧?
让我们升级测试难度:
def test_store_multiple_responses():
"""测试这个调查类是不是能记住三个答案"""
question = "你学会的第一门语言是什么?"
my_survey = AnonymousSurvey(question)
languages = ['Python', 'JavaScript', 'C++'] # 一个比一个难
for lang in languages:
my_survey.store_response(lang) # 把语言都存进去
for lang in languages:
assert lang in my_survey.responses # 要是漏记一个,就让它加班重写代码
这次我们存了三个答案,然后逐个检查。
运行测试时看到两个".."通过,说明我们的调查类记忆力还不错。