#coding:gbk#name_function.pydefget_formatted_name(first,last):"""生成整洁的姓名"""
full_name = first +' '+ last
return full_name.title()#names.pyfrom name_function import get_formatted_name
print("Enter 'q' at any time to quit.")whileTrue:
first =input("\nPlease give me a first name: ")if first =='q':break
last =input("\nPlease give me a last name: ")if last =='q':break
formatted_name = get_formatted_name(first,last)print("\tNeatly formatted name: "+ formatted_name +".")#11.1.1单元测试和测试用例#Python标准库中的模块unittest提供了代码测试工具。#单元测试用于核实函数的某个方面没有问题;#测试用例是一组单元测试,这些单元测试以其核实函数在各种情形下的行为都符合要求。#全覆盖式测试用例包含一整套单元测试,涵盖了各种可能的函数使用方式。#对于大型项目,要实现全覆盖可能很难。#通常,最初只要针对代码的重要行为编写测试即可,等项目被广泛使用时再考虑全覆盖。#11.1.2可通过的测试#要为函数编写测试用例,可先导入摸苦啊unittest以及要测试函数再创建一个继承UnitTest.TestCase的类,并编写一系列方法对函数行为的不同方面进行测试。#test_name_function.pyimport unittest
from name_function import get_formatted_name
classNamesTestCase(unittest.TestCase):#NameTestCase的名称即类的名称可以随便命名,但最好让它看起来与要测试的函数相关,并包含字样Test"""测试name_function.py"""deftest_first_last_name(self):
formatted_name = get_formatted_name('janis','joplin')
self.assertEqual(formatted_name,'Janis Joplin')#unittest最有用的功能之一:一个断言方法;为检查输出结果,我们调用unittest的方法assertEqual(),并向它传递formatted_name和'Janis Joplin'#unittest.main()#11.1.3不能通过的测试#name_function.pydefget_formatted_name(first,middle,last):"""生成整洁的姓名"""
full_name = first +" "+ middle +" "+ last
return full_name.title()#运行test_name_function.py#11.1.4测试未通过时怎么办#如果你检查的条件没有错,测试通过了以为着函数的行为是对的,而测试未通过意味着你编写的新代码有。#因此,测试未通过时,不要修改测试,而修复导致测试不能通过的代码:检查刚对函数所做的修改,找出导致函数行为不符合预期的修改。#name_function.pydefget_formatted_name(first,last,middle =''):"""生成整洁的姓名"""if middle:
full_name = first +" "+ middle +" "+ last
else:
full_name = first +' '+last
return full_name.title()
unittest.main()#11.1.5添加新测试import unittest
from name_function import get_formatted_name
classNamesTestCase(unittest.TestCase):#NameTestCase的名称即类的名称可以随便命名,但最好让它看起来与要测试的函数相关,并包含字样Test"""测试name_function.py"""deftest_first_last_name(self):
formatted_name = get_formatted_name('janis','joplin')
self.assertEqual(formatted_name,'Janis Joplin')#unittest最有用的功能之一:一个断言方法;为检查输出结果,我们调用unittest的方法assertEqual(),并向它传递formatted_name和'Janis Joplin'deftest_first_last_middle_name_name(self):"""能够正确地处理像Wolfgang Amadeus Mozart这样的姓名吗?"""
formatted_name = get_formatted_name('wolfgang','mozart','amadeus')
self.assertEqual(formatted_name,'Wolfgang Amadeus Mozart')
unittest.main()