✅ 简明任务目标
你要为上一任务(Task 4)中实现的
BankAccount
类编写单元测试,并且确保:- 所有公开方法(
deposit
、withdraw
、transfer_to
)都被测试
- 覆盖正常情况 + 异常输入(即正向/负向测试)
- 使用
unittest
框架组织
- 使用
assertEqual
,assertRaises
等断言语句
- 每个测试函数开头的 docstring 作为测试标题
🧱 测试框架要求
你需要使用 Python 标准库的
unittest
,并结构清晰地组织测试:🧾 测试用例概览
❗ 不要抄方法名
方法名 | 测试内容 | 类型 |
test_bank_account_number | 账户编号递增是否正确 | 功能验证 |
test_bank_account | 初始余额计算(加 49.99 奖励) | 功能验证 |
test_valid_deposit | 正确存款后余额是否更新 | 正常路径 |
test_valid_withdraw | 正确取款后余额是否更新 | 正常路径 |
test_valid_transfer | 转账功能是否正确 | 正常路径 |
test_ban_account | 封禁账户状态与字符串输出验证 | 边界条件 |
test_ban_and_commands | 封禁后禁止存取转操作 | 异常路径 |
test_invalid_types | 错误类型触发 CustomTypeError | 类型错误测试 |
test_invalid_values | 错误数值触发 CustomValueError | 数值错误测试 |
test_transfer_over_limit | 超出交易限额时应抛出 | 数值错误测试 |
CustomLimitErrortest_transfer_insufficient_funds | 余额不足时使用断言是否抛出 | 数值错误测试 |
test_set_transaction_limit_valid_cases | 验证设置 None 、浮点数等限额是否有效 | 功能验证 |
🧯 错误处理测试详解
✅ 类型错误测试(CustomTypeError
)
- 创建账户时传入非法类型(如字符串、布尔、非数值)
- 非法的
deposit
、withdraw
、transfer_to
、set_transaction_limit
参数
- 使用
isinstance()
和type()
来区分类型错误触发点
✅ 数值错误测试(CustomValueError
)
- 负数或 0 的操作金额应抛出异常:
- 创建负余额账户
- 存取负数或 0
- 转账负数或 0
✅ 账户状态异常(CustomOperationError
)
- 封禁账户试图执行存取转等操作
- 目标账户被封禁也应报错
- 同时对两个账户进行封禁测试