第14章:Python TDD应对货币类开发变化(一)

ops/2025/1/24 1:30:10/

写在前面


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

问题背景说明

在软件开发过程中,需求变化是不可避免的。在货币类开发中,客户可能提出实现不同币种货币转换的需求。通过编写新的测试用例来驱动代码的修改和扩展,能够使代码更好地适应需求变化,保持代码的灵活性和可维护性。

在开发过程中,需求可能会发生变化。比如需要实现不同币种货币的转换,这在Python TDD中需要通过编写新测试用例来驱动代码的修改。

14.1 思路说明

以将2瑞士法郎(Franc)转换成1美元(Dollar)为例,编写测试用例来验证转换功能。然后根据测试需求,在相关类中实现转换逻辑。

14.2 测试代码

import unittestclass Bank:def addRate(self, from_currency, to_currency, rate):passdef rate(self, from_currency, to_currency):passdef reduce(self, source, to):passclass Money:def __init__(self, amount, currency):self.amount = amountself.currency = currencydef reduce(self, bank, to):passclass Dollar(Money):def __init__(self, amount):super().__init__(amount, "USD")class Franc(Money):def __init__(self, amount):super().__init__(amount, "CHF")class TestCurrencyConversion(unittest.TestCase):def test_reduce_money_different_currency(self):bank = Bank()bank.addRate("CHF", "USD", 2)franc = Franc(2)result = franc.reduce(bank, "USD")self.assertEqual(result.amount, 1)self.assertEqual(result.currency, "USD")if __name__ == '__main__':unittest.main()

14.3 源码说明

在测试类TestCurrencyConversion中,test_reduce_money_different_currency测试用例创建了一个Bank对象,并设置瑞士法郎到美元的汇率为2。创建一个金额为2的Franc对象,调用reduce方法进行货币转换,验证转换后的金额和货币类型是否正确。此时Bank类和Money类中的相关方法都是未实现的占位代码,后续将根据测试需求逐步完善。


http://www.ppmy.cn/ops/152612.html

相关文章

机器学习 vs 深度学习

目录 一、机器学习 1、实现原理 2、实施方法 二、深度学习 1、与机器学习的联系与区别 2、神经网络的历史发展 3、神经网络的基本概念 一、机器学习 1、实现原理 训练(归纳)和预测(演绎) 归纳: 从具体案例中抽象一般规律…

数据库基础知识:理论、E-R图、事务、原则

(5)数据库理论与E-R图 数据库理论(Database Theory)是在创建数据库的过程涉及创建现实世界的抽象模型;将现实世界的概念作为实体表示在数据库中。E-R图(Entity Relationship Diagramming)用于表…

基于.NetCore+Vue的贫困地区儿童资助系统

1.业务需求 1.1 业务角色分析 贫困地区儿童资助系统分为用户和管理员两个角色。管理员具有用户管理、贫困儿童信息管理、儿童参与项目管理、资助项目管理、社会资助记录管理、发放记录、统计分析功能;用户具有贫困儿童登记(代填)、通知公告…

【C语言篇】深入探究 C 语言指针:揭开指针变量与地址的神秘面纱

我的个人主页 我的专栏:C语言,希望能帮助到大家!!!点赞❤ 收藏❤ 目录 引言指针的基础概念 2.1 什么是指针2.2 指针的声明与初始化2.3 指针的存储模型与内存布局 指针的操作 3.1 获取地址与解引用操作3.2 指针的算术…

Unity——鼠标是否在某个圆形Image范围内

文章目录 前言一、示例总结 前言 在Unity中判断鼠标是否位于一个圆形区域内,你可以采用以下步骤实现。假设你已经有了一个带有圆形图片的UI元素(如Image组件),并且这个圆形是完全填充了该UI元素的。 一、示例 1、获取鼠标位置&a…

Python 常用运维模块之OS模块篇

Python 常用运维模块之OS模块篇 OS 模块获取当前工作目录更改当前工作目录返回当前目录路径返回上一级目录路径递归生成目录路径删除目录创建目录删除目录列出特定目录下文件和子目录删除某个特定文件重命名某个文件获取某个文件/目录的信息输出目录路径分隔符输出文件行终止符…

1905电影网中国地区电影数据分析(一) - 数据采集、清洗与存储

文章目录 前言一、数据采集步骤及python库使用版本1. python库使用版本2. 数据采集步骤 二、数据采集网页分析1. 分析采集的字段和URL1.1 分析要爬取的数据字段1.2 分析每部电影的URL1.2 分析每页的URL 2. 字段元素标签定位 三、数据采集代码实现1. 爬取1905电影网分类信息2. 爬…

Yii框架中的路由配置:如何实现URL美化

在Yii框架中,路由配置是通过URL管理器(UrlManager)来实现的,而URL美化则是路由配置的一个重要应用。以下是如何在Yii框架中实现URL美化的具体步骤: 一、URL管理器配置 启用美化URL: 在Yii框架的配置文件…