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

让函数的约定足够具体
本例函数只接受字符串,并去掉首尾空白。空字符串仍是合法结果,非字符串则抛出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







