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

第13章:Python TDD完善货币加法运算(二)

写在前面


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

问题背景说明

在现实世界中,货币交易往往涉及不同币种之间的运算。仅实现同币种的加法运算无法满足实际需求。因此,需要引入“银行”对象来处理汇率转换问题,完善货币加法运算功能,使其能够正确处理不同币种的相加操作,增强货币类的实用性和功能性。

考虑到实际情况,货币加法可能涉及不同币种,这需要我们进一步优化代码,在Python TDD流程中不断完善功能。

13.1 思路说明

引入“银行”(Bank)对象来处理汇率转换问题。将货币的总和视为一个表达式,每种货币是表达式的原子形态。通过Bank类的方法来根据汇率将不同币种的货币转换后再进行加法运算。

13.2 测试代码

import unittestclass Bank:def reduce(self, source, to):return Money.dollar(10)  # 暂时的哑实现class Money:def __init__(self, amount, currency):self.amount = amountself.currency = currencydef plus(self, addend):return Money(self.amount + addend.amount, self.currency)def reduce(self, bank, to):return bank.reduce(self, to)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)bank = Bank()result = five_dollars1.plus(five_dollars2).reduce(bank, "USD")self.assertEqual(result.amount, 10)self.assertEqual(result.currency, "USD")if __name__ == '__main__':unittest.main()

13.3 源码说明

新增Bank类,目前reduce方法是哑实现,仅返回一个固定的Money对象。Money类中新增reduce方法,用于将货币对象通过Bank类进行转换。在测试用例中,对相加后的货币对象调用reduce方法,并验证结果。虽然当前Bank类功能不完善,但为后续实现多币种加法奠定了基础。

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

相关文章:

  • 两份PDF文档,如何比对差异,快速定位不同之处?
  • ESP-Skainet语音唤醒技术,设备高效语音识别方案,个性化交互应用
  • 地图:nuxt3高德地图简单使用 / nuxt2 + amap
  • 走进DevOps:让开发与运维齐头并进
  • 力扣动态规划-5【算法学习day.99】
  • LLM(3) : 浏览器录制16K的音频并上传到后端
  • PyTorch使用教程(13)-一文搞定模型的可视化和训练过程监控
  • 服务器日志自动上传到阿里云OSS备份
  • 树莓派学习
  • NestJS中实现注入多个实现了同一个接口的Service
  • Qt按钮美化教程
  • 基于单片机的多功能蓝牙语音智能台灯(论文+源码)
  • 第15章:Python TDD应对货币类开发变化(二)
  • 算法随笔_13: 有效三角形的个数
  • WSL 2 自动更新 虚拟 IP 到 window hosts
  • 我在广州学Mysql 系列——触发器的使用
  • 【useCallback Hook】在多次渲染中缓存组件中的函数,避免重复创建函数
  • 2025/1/20 学习Vue的第三天
  • Kotlin Bytedeco OpenCV 图像图像49 仿射变换 图像裁剪
  • 金融项目实战 07|Python实现接口自动化——连接数据库和数据清洗、测试报告、持续集成
  • (快速入门)保姆级详细的 Midjourney 基础教程
  • leetcode——找到字符串中所有字母异位词(java)
  • 大文件上传服务-后端V1V2
  • Single-Model and Any-Modality for Video Object Tracking——2024——cvpr-阅读笔记
  • 阳振坤:AI 大模型的基础是数据,AI越发达,数据库价值越大
  • Linux磁盘空间不足,12个详细的排查方法
  • Spring Web MVC综合案例
  • 微软预测 AI 2025,AI Agents 重塑工作形式
  • lvgl性能调优
  • CSS实现实现票据效果 mask与切图方式