说说在 Python 中如何测试函数
Python 标准库中的 unittest 模块,提供了代码测试功能 。我们可以通过单元测试来验证所定义的函数是否符合预期。 一个函数一般会定义一组的单元测试(也叫做测试用例), 通过这些测试用例来判断该函数在各种边界条件下,函数的行为是否符合预期 。大型项目中要做到全覆盖测试比较困难,所以在最初阶段,只会针对代码的重要行为来编写测试用例。 而后,在项目的发展过程中,再逐步完善测试用例。
1 第一个单元测试
假设有这样的一个函数,它会返回格式化后的待读信息: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()单元测试类必须继承自 unittest.TestCase 类, 这样 Python 才会运行我们编写的测试逻辑。
在此,使用了 unittest 类的断言方法 assertEqual。通过断言方法,我们就可以判定结果是否与期望结果相一致。
运行结果:
说说在 Python 中如何测试函数
2 测试不通过
假设 to_read() 函数需要扩展,加入一个 book_type 参数,用于定义该书所归属的领域:
def to_read(book_name, book_type):
"""想读的书"""
content = "我想读《" + book_name + "》咯,"
content += "它属于" + book_type + "领域"
return content
这时,如果再次运行之前编写好的单元测试用例,就会抛出异常:
说说在 Python 中如何测试函数
第一行 FAILED,表示没有完全通过测试,errors 指出了出错个数。
测试用例一般会包含多个单元测试,所以我们可以通过 Traceback 找到出错的单元测试,精确到行数。
发生测试不通过现象时,首先要做的是冷静,通过 Traceback ,找到问题所在,修改函数或者单元测试代码,以符合预期行为。
在这个示例中,我们尝试修改单元测试代码:def test_read(self):
"""测试 read 函数"""
result = to_read("现代艺术150年 : 一个未完成的故事","艺术")
self.assertEqual(result, "我想读《现代艺术150年 : 一个未完成的故事》咯,它属于艺术领域")
是不是测试通过啦 O(∩_∩)O哈哈~
请转发+私信回复:“学习”就可以拿到一份我为大家准备的Python学习资料!
内容由用户发布,不代表本站观点。如发现有害或侵权内容。请点击这里