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

第11章:Python TDD实现货币类加法运算初步

写在前面


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

问题背景说明

在实际的货币交易场景中,货币的加法运算是常见的操作。在完成货币类的基本定义和部分功能实现后,实现货币的加法运算能够进一步完善货币类的功能体系,使其更符合实际应用需求。通过TDD方式实现加法运算,可以确保功能的正确性和稳定性。

在Python测试驱动开发(TDD)中,完成货币类基本结构搭建后,实现货币的加法运算是拓展功能的重要一步。这不仅考验对代码逻辑的把控,也进一步体现TDD的实践流程。

11.1 思路说明

以简单的同币种加法为例,如$5 + $5 = $10,我们先编写测试用例来明确功能需求,再在Money类中实现相应的加法方法。这遵循TDD先测试后实现的原则,确保代码功能的准确性。

11.2 测试代码

import unittest


class Money:
    def __init__(self, amount, currency):
        self.amount = amount
        self.currency = 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 + five_dollars2
        self.assertEqual(result.amount, 10)
        self.assertEqual(result.currency, "USD")


if __name__ == '__main__':
    unittest.main()

11.3 源码说明

在测试类TestMoneyAddition中,test_simple_addition测试用例创建了两个金额为5的Dollar对象。目前代码中还未实现+运算符的具体逻辑,这里先假设可以进行加法操作,后续会在Money类中实现。通过断言验证加法结果的金额和货币类型是否符合预期。


http://www.kler.cn/a/512255.html

相关文章:

  • Linux系统之kill命令的基本使用
  • 如何在龙蜥 OS(AliOS)上安装极狐GitLab?
  • MySQL中日期和时间戳的转换:字符到DATE和TIMESTAMP的相互转换
  • AUTOSAR从入门到精通-线控底盘技术
  • JWT在线解密/JWT在线解码 - 加菲工具
  • React的应用级框架推荐——Next、Modern、Blitz等,快速搭建React项目
  • 深入HDFS——HA和QJM
  • 4.1 AI 大模型应用最佳实践:如何提升 GPT 模型使用效率与质量
  • MySQL多表查询练习
  • 数据库性能优化(sql优化)_SQL执行计划01_yxy
  • 【数据结构篇】顺序表 超详细
  • 从一到无穷大 #42:ClickHouse - 极致工程优化的Lightning Fast Analytics
  • vue3+vite+ts+router4+Pinia+Axios+sass 从0到1搭建
  • Sam Altman亲自确认:o3-mini即将上线!GPT和o系列模型合并!
  • Halcon 3D基础知识及常用函数
  • 基于本地消息表实现分布式事务
  • JAVAweb学习日记(五) SpringBootWeb
  • Vue+Element-ui 中 使用el-table 设置表格单元格 (el -table-column) 保留空格和换行
  • ASP .NET Core 学习(.NET9)配置接口访问路由
  • 从CentOS到龙蜥:企业级Linux迁移实践记录(容器与应用)
  • 25届合肥工业大学自动化考研复试攻略
  • 大型语言模型(LLM)在算法设计中的系统性综述
  • MySQL 数据库的备份和恢复(Linux)
  • Spring Boot安全加固:基于Spring Security的权限管理
  • vue2 - Day05 - VueX
  • WOA-CNN-GRU-Attention、CNN-GRU-Attention、WOA-CNN-GRU、CNN-GRU四模型对比多变量时序预测