前言:
编写函数或者类时,需要编写测试代码,来保证其的功能运行是否按预期的那样工作。在程序添加新的代码时,用来测试是否会破坏本身的功能。
编写函数:
def get_formatted_name(first,last,middle=''): """生成整洁的姓名""" if middle: full_name = first + ' '+ middle +'+ last else: full_name = first + ' +return full_name.title()
编写测试:
import unittest from name_function get_formatted_name class NameTestCase(unittest.TestCase): 测试name_function.py def test_first_last_name(self): 能够正确地处理像Janis Joplin这样的姓名吗?""" formatted_name = get_formatted_name('janis',joplin') self.assertEqual(formatted_name,Janis Joplin) test_first_last_middle_name(self): 能够正确地处理像Wolfgang Amadeus Mozart这样的姓名吗?wolfgangmozartamadeusWolfgang Amadeus Mozart) unittest.main()
编写类:
AnonymousSurvey(): 收集匿名调查问卷的答案def __init__(self,question): 存储一个问题,并为存储答案做准备 self.question = question self.responses = [] show_question(self): 显示调查问卷""" print(self.question) store_response(self,new_response): 存储单份调查答卷 self.responses.append(new_response) show_results(self): 显示收集到的所有答卷print("Survey results") for response in self.responses: - '+ response)
编写测试:
from survey AnonymousSurvey TestAnonymousSurvey(unittest.TestCase): 针对AnonymousSurvey类的测试 test_store_single_response(self): 测试三个答案会被妥善地存储 question = What language did you first learn to speak? my_survey = AnonymousSurvey(question) lists = [EnglishChinaJapanese] for s lists: my_survey.store_response(s) self.assertIn(s,my_survey.responses) unittest.main()
总结:
unittest模块不仅支持单元测试,在接口和功能测试也能直接套用其中的方法。编写unittest必须添加继承unittest.TestCase类,测试的函数必须以test*开头,以及使用unittest.mian方法来运行此测试模块。