本章讲述python测试函数
编写一个函数
namefunc.py
#得到全名
def getfname(first,last):
fullname= first + ' ' + last
return fullname.title()
使用函数
names.py
from namefunc import getfname
print("enter q to quit")
while True:
first = input("input first name: ")
if first == 'q':
break
last = input("input last name: ")
if last == 'q':
break
fullname = getfname(first,last)
print("fullname = "+ fullname)
编写测试用例
test_namefunc.py
import unittest #导入测试模块工具
from namefunc import getfname #需要测试的函数
class NamesTestCase(unittest.TestCase):
#测试getfname
def test_first_last_name(self):
#能够正确处理姓名吗
fullname = getfname('ali','baba')
self.assertEqual(fullname,'Ali Baba')
unittest.main()
此时用例通过
输出台信息

image.png
如果有异常,比如测试函数中全名多加了一个空格
输出台信息可能为

image.png
添加新测试
namefunc2.py
#得到全名
def getfname(first,last,middle =''):
if middle:
fullname = first + ' ' + middle + ' ' + last
else:
fullname = first + ' ' + last
return fullname.title()
test_namefunc.py
import unittest #导入测试模块工具
from namefunc2 import getfname #需要测试的函数
class NamesTestCase(unittest.TestCase):
#测试getfname
def test_first_last_name(self):
#能够正确处理ali baba姓名吗
fullname = getfname('ali','baba')
self.assertEqual(fullname,'Ali Baba')
def test_first_last_middle_name(self):
#能够正确处理ali baba ba 姓名吗
fullname = getfname('ali','baba','b')
self.assertEqual(fullname,'Ali B Baba')
unittest.main()
测试通过
输出台信息

image.png
unittest各种断言方法
| 方法 | 用途 |
|---|---|
| assertEqual(a,b) | 核实a == b |
| assertNotEqual(a,b) | 核实a != b |
| assertTrue(x) | 核实x为True |
| assertFalse(x) | 核实x为false |
| assertIn(item,list) | 核实item在list中 |
| assertNotIn(item,list) | 核实item不在list中 |