Lazy loaded image
Task 5 - You Are the Auto Marker (Literally)b
Words 374Read Time 1 min
2025-5-27

✅ 简明任务目标

你要为上一任务(Task 4)中实现的 BankAccount 类编写单元测试,并且确保:
  • 所有公开方法(depositwithdrawtransfer_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

  • 创建账户时传入非法类型(如字符串、布尔、非数值)
  • 非法的 depositwithdrawtransfer_toset_transaction_limit 参数
  • 使用 isinstance()type() 来区分类型错误触发点

✅ 数值错误测试(CustomValueError

  • 负数或 0 的操作金额应抛出异常:
    • 创建负余额账户
    • 存取负数或 0
    • 转账负数或 0

✅ 账户状态异常(CustomOperationError

  • 封禁账户试图执行存取转等操作
  • 目标账户被封禁也应报错
  • 同时对两个账户进行封禁测试