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

embedded/2025/1/22 10:07:18/

写在前面


这本书是我们老板推荐过的,我在《价值心法》的推荐书单里也看到了它。用了一段时间 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.ppmy.cn/embedded/156026.html

相关文章

第16篇:从入门到精通:python第三方库入门详解

第16篇:第三方库入门 内容简介 本篇文章将引导您了解Python中的第三方库,包括如何查找与使用这些库,推荐几款常用且功能强大的库如requests、beautifulsoup4、pandas和numpy,以及如何安装和管理项目依赖。通过学习本篇内容&…

MECD+: 视频推理中事件级因果图推理--VLM长视频因果推理

论文链接:https://arxiv.org/pdf/2501.07227v1 1. 摘要及主要贡献点 摘要: 视频因果推理旨在从因果角度对视频内容进行高层次的理解。然而,目前的研究存在局限性,主要表现为以问答范式执行,关注包含孤立事件和基本因…

VSCode最新离线插件拓展下载方式

之前在vscode商店有以下类似的download按钮,但是2025年更新之后这个按钮就不提供了,所以需要使用新的方式下载 ps:给自己的网站推广下~~(国内直连GPT/Claude) 新的下载方式1 首先打开vscode商店官网:vscode插件下载…

【北京迅为】iTOP-4412全能版使用手册-第八十七章 安装Android Studio

iTOP-4412全能版采用四核Cortex-A9,主频为1.4GHz-1.6GHz,配备S5M8767 电源管理,集成USB HUB,选用高品质板对板连接器稳定可靠,大厂生产,做工精良。接口一应俱全,开发更简单,搭载全网通4G、支持WIFI、蓝牙、…

Java后端Controller参数校验的一些干货及问题~

你们好,我是金金金。 场景 先看如下一张图,这是一个控制器里面的一个方法,第一眼是不是就感觉代码量非常多?而且随着参数越来越多 你则需要写n个if else来完成校验,属实是麻烦而且不够优雅 JSR303校验 仔细认真看,更容易理解吸收,想想什么层面需要做校验呢? 前端请求后…

【C++学习篇】滑动窗口--结合例题讲解思路

目录 1. 例题:最小覆盖子串 1.1 解题思路 2. 方法一代码实现:用kinds来记录t中有效元素的种类,count来记录s中的有效元素种类 3. 方法二:count来记录s中有效元素的个数 ok,这是最后一期关于滑动窗口的学习章节了…

事务处理系统 (Transaction Processing System, TPS)

事务处理系统 (Transaction Processing System, TPS) 是一种专门用于自动化日常业务事务处理的计算机系统。这类系统通常处理大量的结构化数据,如订单处理、支付结算、库存管理等,以支持企业日常的运营和管理。TPS 的核心任务是确保高效、准确地记录和管理大量重复性的事务,…

零信任安全理念

零信任的核心原则是 “永不信任,持续验证”。它不再默认企业内部网络是可信的,而是对每一个访问请求进行严格的身份认证、授权和访问控制。在零信任架构下,访问主体(如用户、设备等)需要通过多因素认证来证明自己的身份…