Python 标准库中的 unittest 模块,提供了代码测试功能 。咱们能够经过单元测试来验证所定义的函数是否符合预期。 一个函数通常会定义一组的单元测试(也叫作测试用例), 经过这些测试用例来判断该函数在各类边界条件下,函数的行为是否符合预期 。大型项目中要作到全覆盖测试比较困难,因此在最初阶段,只会针对代码的重要行为来编写测试用例。 然后,在项目的发展过程当中,再逐步完善测试用例。bash
假设有这样的一个函数,它会返回格式化后的待读信息:函数
def to_read(book_name):
'''想读的书'''
return '我想读《' + book_name + '》咯'
复制代码
如今建立一个单元测试:单元测试
import unittest
from book_function import to_read
class BookTestCase(unittest.TestCase):
'''测试 book_function.py'''
def test_read(self):
'''测试 read 函数'''
result = to_read('现代艺术150年 : 一个未完成的故事')
self.assertEqual(result, '我想读《现代艺术150年 : 一个未完成的故事》咯')
if __name__ == '__main__':
unittest.main()
复制代码
运行结果:测试
假设 to_read() 函数须要扩展,加入一个 book_type 参数,用于定义该书所归属的领域:ui
def to_read(book_name, book_type):
'''想读的书'''
content = '我想读《' + book_name + '》咯,'
content += '它属于' + book_type + '领域'
return content
复制代码
这时,若是再次运行以前编写好的单元测试用例,就会抛出异常:spa
发生测试不经过现象时,首先要作的是冷静,经过 Traceback ,找到问题所在,修改函数或者单元测试代码,以符合预期行为。3d
在这个示例中,咱们尝试修改单元测试代码:code
def test_read(self):
'''测试 read 函数'''
result = to_read('现代艺术150年 : 一个未完成的故事','艺术')
self.assertEqual(result, '我想读《现代艺术150年 : 一个未完成的故事》咯,它属于艺术领域')
复制代码
是否是测试经过啦 O(∩_∩)O哈哈~cdn