js 访问网站统计刷新不增加次数,寻找网站制作公司,wordpress发送注册邮件失败,兰州做网站哪家好目录 ❤ 测试函数
❤ 单元测试和测试用例
❤ 可通过的测试
❤ 不能通过的测试
❤ 测试未通过时怎么办
❤ 添加新测试 ❤ 测试函数
学习测试#xff0c;得有测试的代码。下面是一个简单的函数#xff1a; name_function.py def get_formatted_name(first, last):…目录 ❤ 测试函数
❤ 单元测试和测试用例
❤ 可通过的测试
❤ 不能通过的测试
❤ 测试未通过时怎么办
❤ 添加新测试 ❤ 测试函数
学习测试得有测试的代码。下面是一个简单的函数 name_function.py def get_formatted_name(first, last):Generate a neatly formatted full name.full_name first lastreturn full_name.title() 为核实get_formatted_name()像期望的那样工作编写一个使用这个函数的程序 names.py from name_function import get_formatted_nameprint(Enter q at any time to quit.)
while True:first input(\nPlease give me a first name: )if first q:breaklast input(Please give me a last name: )if last q:breakformatted_name get_formatted_name(first, last)print(\tNeatly formatted name: formatted_name .) 输出: Enter q at any time to quit. Please give me a first name: janis Please give me a last name: joplin Neatly formatted name: Janis Joplin. Please give me a first name: bob Please give me a last name: dylan Neatly formatted name: Bob Dylan. Please give me a first name: q 从输出可知合并得到的姓名正确无误。现在假设要修改get_formatted_name()使其还能够处理中间名。确保不破化这个函数处理只有名和姓的方式为此可在每次修改get_formatted_name()后都进行测试运行names.py并输入像Janis Joplin这样的姓名。但python提供了一种自动化测试函数输出的高效方式对get_formatted_name()进行自动化测试就可信心满满确信函数提供测试过的姓名时都能正确工作。
❤ 单元测试和测试用例
Python标准库中的模块unittest提供了代码测试工具。单元测试——合适函数某个方面没有问题测试用例——一组单元测试这些单元测试一起核实函数在各种情况下的行为都符合要求。良好的测试用例考虑到函数可能收到的各种输入包含针对所有这些测试情形的测试。全覆盖式测试用例包含一整套单元测试涵盖了各种可能的函数使用方式。
❤ 可通过的测试
编写测试用例可先导入模块unittest以及要测试的函数再创建一个继承unittest.TestCase的类并编写一系列方法对函数行为的不同方面进行测试。 下面时一个只包含一个方法的测试用例检查函数get_formatted_name()在给定名和姓时能否正确工作
test_name_function.pyimport unittest
from name_function import get_formatted_nameclass NamesTestCase(unittest.TestCase): # 创建包含针对 get_formatted_name() 的单元测试的类最好包含字样Test必须继承unittest.TestCase测试name_function.pydef test_first_last_name(self):能够正确地处理像Janis Joplin这样的姓名吗formatted_name get_formatted_name(janis, joplin)self.assertEqual(formatted_name, Janis Joplin) # unittest类中的一个断言方法判断是否相等if __name__ __main__: # 在pycharm中运行时需要这行代码IDLE运行则不需要unittest.main() # 让python运行这个文件中的测试
运行test_name_function.py时所有以test打头的方法都将自动运行。
❤ 不能通过的测试
修改get_formatted_name()使其能够处理中间名但这样做时故意让函数无法处理只有名和姓的名字。 get_formatted_name()的新版本通过一个实参指定中间名 name_function.py def get_formatted_name(first, middle, last):Generate a neatly formatted full name.full_name first middle lastreturn full_name.title() 此时运行test_name_function.py运行结果
Ran 1 test in 0.003sFAILED (errors1)Error
Traceback (most recent call last):File C:\Program Files\Python 3.7\lib\unittest\case.py, line 59, in testPartExecutoryieldFile C:\Program Files\Python 3.7\lib\unittest\case.py, line 615, in runtestMethod()File C:\Users\yxf\Desktop\python_pycharm\test_names_function.py, line 10, in test_first_last_nameformatted_name get_formatted_name(janis, joplin)
TypeError: get_formatted_name() missing 1 required positional argument: lastProcess finished with exit code 1Assertion failedAssertion failedAssertion failed
行结果中给出了详细的错误信息。
❤ 测试未通过时怎么办
由测试代码运行得到的错误信息可知get_formatted_name()少一个实参修改get_formatted_name()
def get_formatted_name(first, last, middle):Generate a neatly formatted full name.if middle:full_name first middle lastelse:full_name first lastreturn full_name.title() 再次运行test_name_function.py
Ran 1 test in 0.002sOK
❤ 添加新测试
再编写一个测试用例用于测试包含中间名字的测试即在NamesTestCase类中再添加一个方法 def test_first_last_middle_name(self):能够正确地处理像Wolfgang Amadeus Mozart这样的名字吗formatted_name get_formatted_name(wolfgang, mozart, amadeus)self.assertEqual(formatted_name, Wolfgang Amadeus Mozart)
***调用函数时可选实参即本段代码中中间名在最后。 方法名必须以test_打头这样它才会在运行test_name_function.py时自动运行。 在TestCase类中可以使用很长的方法名这些方法名必须是描述性的这样才能明白测试未通过时的输出。