Python 第十一章 测试类
1 提供一个类
class AnonymousSurvey():
“”“收集匿名调查问卷的答案”""
def init(self,question):
“”“存储一个问题,并为存储答案做准备”""
self.question=question
self.responses=[]
def show_questions(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("- "+response)
2 使用类
from survey import AnonymousSurvey
定义一个问题
question= “What language did you first learn to speak?”
my_survey=AnonymousSurvey(question)
my_survey.show_questions()
print(“Enter ‘q’ at any time to quit.\n”)
while True:
response=input(“Language: “)
if response==‘q’:
break
my_survey.store_response(response)
print(”\nThank you to everyone who participated in the survey!”)
my_survey.show_results()
What language did you first learn to speak?
Enter ‘q’ at any time to quit.
Language: English
Language: Spanish
Language: English
Language: Chinese
Language: q
Thank you to everyone who participated in the survey!
Survey results:
- English
- Spanish
- English
- Chinese
3 测试
import unittest
from testClass.survey import AnonymousSurvey
class TestAnonymousSurvey(unittest.TestCase):
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)
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()
Ran 2 tests in 0.005s
OK
4 测试改进
import unittest
from testClass.survey import AnonymousSurvey
# 使用setUp()改进
class TestAnonymousSurvey(unittest.TestCase):
def setUp(self):
question="What language did you first learn to speak?"
self.my_survey = AnonymousSurvey(question)
self.responses=['English','Spanish','Mandarin']
def test_store_single_response(self):
"""测试单个答案会被妥善存储"""
self.my_survey.store_response(self.responses[0])
self.assertIn(self.responses[0],self.my_survey.responses)
def test_store_three_responses(self):
"""测试三个答案"""
for response in self.responses:
self.my_survey.store_response(response)
for response in self.responses:
self.assertIn(response,self.my_survey.responses)
if __name__ =='__main__':
unittest.main()