1、测试函数
name_function.py:
def get_formatted_name(first, last):"""生成整洁的姓名"""full_name = first + ' + lastreturn full_name.title()
names.py:
from name_function import get_formatted_name as gtprint("在任何时候输入 q 进行退出。")while True:first = input("\n请输入一个first name: ")if first == 'q':breaklast = input("请输入一个last name:")if last == 'q':breakformatted_name = gt(first, last)print("\n整洁的名字是:" + formatted_name + '.')
test_name_function.py:测试函数
import unittestfrom name_function import get_formatted_nameclass NamesTestCase(unittest.TestCase):"""测试'name_function.py'"""#注意!方法名必须以test_打头,这样才会自动运行!def test_first_last_name(self):#这个测试会通过formatted_name = get_formatted_name('janis', 'joplin')self.assertEqual(formatted_name, 'Janis Joplin')#将formatted_name与右值相比,一样则通过def test_first_last_middle_name(self):#这个测试会失败formatted_name = get_formatted_name('wolfgang', 'mozart', 'amadeus')self.assertEqual(formatted_name, 'Wolfgang Amadeus Mozart')unittest.main()
由于第二个测试函数多了一个参数导致测试未通过,我们可以将name_function改为这样:
def get_formatted_name(first, last, middle=''): #设置一个middle默认值参数"""Generate a neatly-formatted full name."""if middle:full_name = first + ' ' + middle + ' ' + lastelse:full_name = first + ' ' + lastreturn full_name.title()
即可解决。
2、测试类
- 各种断言方法:
assertEqual(a,b) 核实 a==bassertNotEqual(a,b) 核实 a!=bassertTrue(x) 核实x为真assertFalse(x) 核实x为假assertIn(item,list) 核实item在list中assertNotIn(item,list) 核实item不在list中
一个要测试的类:survey.py
class AnonymousSurvey():"""收集匿名调查问卷的答案"""def __init__(self, question):"""存储一个问题,并为存储答案做准备"""self.question = questionself.responses = []def show_question(self):"""显示调查问卷"""print(self.question)def store_response(self, new_response):"""存储单份调查答案"""self.responses.append(new_response)def show_results(self):"""显示所有收集到的答案"""print("调查结果:")for response in self.responses:print('- ' + response)
调用代码:language_survey.py
from survey import AnonymousSurvey# 定义一个问题,并创建一个表示调查的AnonymousSurvey对象question = "你母语学的啥语言?"my_survey = AnonymousSurvey(question)# 显示问题并存储答案my_survey.show_question()print("输入 q 退出。\n")while True:response = input("Language: ")if response == 'q':breakmy_survey.store_response(response)# 显示调查结果print("\n感谢参加的所有人!")my_survey.show_results()
使用setUp函数的测试代码:test_survey.py
import unittestfrom survey import AnonymousSurveyclass TestAnonymousSurvey(unittest.TestCase):"""测试 AnonymousSurvey 类"""def setUp(self): #优先test_打头的函数运行"""创建一个调查对象和一组答案,供使用的测试方法使用"""question = "你母语学的啥语言?"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)unittest.main()
3、最后:
- 测试通过:打印一个句点
- 引发错误:打印一个 E
- 断言失败:打印一个 F
