给Python小函数写第一组单元测试

给小函数写测试,不必先搭建复杂框架。先明确输入与输出约定,再用正常值、边界值和错误类型各检查一次。

浅色学习桌、笔记本与课程卡片
浅色主题概念配图,选自本站AI生成图库;非事件现场或产品实测截图。

让函数的约定足够具体

本例函数只接受字符串,并去掉首尾空白。空字符串仍是合法结果,非字符串则抛出TypeError。约定越清楚,测试越不容易只是重复实现代码。

断言检查结果,不是打印结果

unittest的assertEqual会在结果不符合预期时报告失败,assertRaises用于检查异常约定。测试名称说明场景,比test1、test2更容易在失败时定位问题。

让测试彼此独立

这里不访问网络、数据库或真实用户文件,每次运行都从同样的输入开始。后续修改函数时,可先运行这些测试观察行为是否变化;通过三项测试不代表覆盖全部需求,应随着明确的新边界补充案例。

可复制的练习

import unittest

def clean_name(value):
    if not isinstance(value, str):
        raise TypeError("name must be a string")
    return value.strip()

class CleanNameTests(unittest.TestCase):
    def test_surrounding_spaces(self):
        self.assertEqual(clean_name("  玖柒  "), "玖柒")

    def test_empty_string(self):
        self.assertEqual(clean_name(""), "")

    def test_wrong_type(self):
        with self.assertRaises(TypeError):
            clean_name(None)

if __name__ == "__main__":
    unittest.main()

本例在隔离的本地环境检查过,Python 3.14.4;下面列出对应运行结果。

运行摘要应为 Ran 3 tests,并以 OK 结束。耗时因环境而异。

参考与延伸阅读

Python 官方文档。本文的学习步骤和练习为本站整理;涉及具体产品或工具时,请同时核对当前版本说明。

资料查阅与编辑日期:2026年9月22日。作者:玖柒。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享