题目
为简单加法函数设计单元测试用例
信息
- 类型:问答
- 难度:⭐
考点
单元测试概念,测试用例设计,断言使用
快速回答
为加法函数设计单元测试的核心要点:
- 测试正常输入:如 (2, 3) 预期 5
- 测试边界值:如 (0, 0) 和最大整数
- 测试负数输入:如 (-1, 5) 预期 4
- 使用断言验证结果
原理说明
单元测试是验证代码最小单元(如函数)行为的自动化测试。核心目标是:隔离测试、快速反馈和预防回归。本题考察为简单函数设计有效测试用例的能力。
代码示例(Python unittest)
import unittest
def add(a, b):
return a + b
class TestAddFunction(unittest.TestCase):
# 正常输入测试
def test_positive_numbers(self):
self.assertEqual(add(2, 3), 5)
# 边界值测试
def test_zero_values(self):
self.assertEqual(add(0, 0), 0)
self.assertEqual(add(10, 0), 10)
# 负数输入测试
def test_negative_numbers(self):
self.assertEqual(add(-1, 5), 4)
self.assertEqual(add(-3, -2), -5)
if __name__ == '__main__':
unittest.main()最佳实践
- 用例分类:每组测试一个明确场景(正常/边界/异常)
- 命名规范:测试方法名需清晰表达意图(如 test_add_negative_numbers)
- 断言选择:使用精确断言(如 assertEqual 而非 assertTrue)
- 独立性:每个测试用例必须独立运行且不依赖执行顺序
常见错误
- ❌ 只测试正常路径(忽略边界和异常)
- ❌ 断言过于笼统(如只验证结果非空)
- ❌ 测试用例间存在依赖(如共享变量)
- ❌ 不处理浮点数精度(如 assertEqual(0.1+0.2, 0.3) 会失败)
扩展知识
- 测试框架:Python 可用 unittest/pytest,Java 用 JUnit,JS 用 Jest
- 测试覆盖率:使用 coverage.py 等工具确保覆盖所有代码分支
- 测试金字塔:单元测试应占测试总量的 70%(高于集成和 UI 测试)
- TDD:测试驱动开发要求先写测试再实现功能