当前位置: 首页 > news >正文

第12章:Python TDD完善货币加法运算(一)

写在前面


这本书是我们老板推荐过的,我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后,我突然思考,对于测试开发工程师来说,什么才更有价值呢?如何让 AI 工具更好地辅助自己写代码,或许优质的单元测试是一个切入点。 就我个人而言,这本书确实很有帮助。第一次读的时候,很多细节我都不太懂,但将书中内容应用到工作中后,我受益匪浅。比如面对一些让人抓狂的代码设计时,书里的方法能让我逐步深入理解代码的逻辑与设计。 作为一名测试开发工程师,我想把学习这本书的经验分享给大家,希望能给大家带来帮助。因为现在工作中大多使用 Python 代码,所以我把书中JAVA案例都用 Python 代码进行了改写 。

问题背景说明

在初步实现货币加法运算的测试用例后,需要具体实现加法功能的代码。然而,初步实现可能只考虑了简单的同币种相加情况,后续还需要考虑更多复杂情况。通过逐步完善加法运算功能,能够提高货币类在实际应用中的适用性和准确性。

初步编写测试用例后,我们需要在Money类中实现加法功能,使测试通过,这是Python TDD实践的关键环节。

12.1 思路说明

Money类中定义plus方法来实现货币加法。由于目前只考虑同币种相加,所以直接将两个货币对象的金额相加,货币类型保持不变。

12.2 测试代码

import unittestclass Money:def __init__(self, amount, currency):self.amount = amountself.currency = currencydef plus(self, addend):return Money(self.amount + addend.amount, self.currency)class Dollar(Money):def __init__(self, amount):super().__init__(amount, "USD")class TestMoneyAddition(unittest.TestCase):def test_simple_addition(self):five_dollars1 = Dollar(5)five_dollars2 = Dollar(5)result = five_dollars1.plus(five_dollars2)self.assertEqual(result.amount, 10)self.assertEqual(result.currency, "USD")if __name__ == '__main__':unittest.main()

12.3 源码说明

Money类中新增的plus方法接受一个addend参数,它是另一个Money对象。方法内部将当前对象的金额与addend的金额相加,创建一个新的Money对象并返回,新对象的货币类型与原对象相同。在测试用例中,调用plus方法进行加法运算,并验证结果。

http://www.lryc.cn/news/523778.html

相关文章:

  • Springboot项目Jackson支持多种接收多种时间格式
  • 两台电脑互PING不通的解决办法
  • No. 34 笔记 | Python知识架构与数据类型相关内容 | 实操
  • 【2024年华为OD机试】 (B卷,100分)- 字符串分割(Java JS PythonC/C++)
  • Pix2Pix :用于图像到图像转换的条件生成对抗网络
  • 基于VSCODE+GDB+GDBSERVER远程单步调试设备篇(可视化界面)
  • CamemBERT:一款出色的法语语言模型
  • 0基础跟德姆(dom)一起学AI 自然语言处理18-解码器部分实现
  • 我的创作纪念日——我与CSDN一起走过的365天
  • C++:bfs解决多源最短路与拓扑排序问题习题
  • 【面试题】JVM部分[2025/1/13 ~ 2025/1/19]
  • 文献综述相关ChatGPT提示词分享
  • Excel 技巧14 - 如何批量删除表格中的空行(★)
  • 图片生成Prompt编写技巧
  • 【STM32-学习笔记-4-】PWM、输入捕获(PWMI)
  • TOSUN同星TsMaster使用入门——3、使用系统变量及c小程序结合panel面板发送报文
  • 【Web】2025-SUCTF个人wp
  • React进阶之react.js、jsx模板语法及babel编译
  • 在Linux上如何让ollama在GPU上运行模型
  • R 语言科研绘图第 20 期 --- 箱线图-配对
  • suctf2025
  • Quinlan C4.5剪枝U(0,6)U(1,16)等置信上限如何计算?
  • 计算机组成原理--笔记二
  • 麒麟系统中删除权限不够的文件方法
  • 自定义提示确认弹窗-vue
  • 运行fastGPT 第五步 配置FastGPT和上传知识库 打造AI客服
  • CSS 合法颜色值
  • Redis - General - 未授权访问漏洞(用户配置问题)
  • 解决 WSL 2 中 Ubuntu 22.04 安装 Docker 后无法启动的问题
  • Conda的一些常用命令