第2章:Python TDD构建Dollar类基础

news/2025/1/22 18:56:22/

写在前面


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

问题背景说明

在实际的货币相关程序开发中,需要对不同货币金额进行操作和管理。以美元(Dollar)为例,创建一个专门的类来处理美元金额的运算和存储是很有必要的。通过Python TDD方式构建Dollar类,不仅可以清晰地定义美元金额的操作逻辑,还能利用测试用例保证类的功能正确性,提高代码的可靠性和可维护性。

接下来,我们开始在Python TDD环境下构建Dollar类,用于处理金额相关的操作。这是朝着实现更复杂货币功能迈出的重要一步。

2.1 思路说明

根据实际需求,Dollar类需要具备存储金额的能力,并且能够进行金额的乘法运算。我们定义构造函数来初始化金额,同时定义乘法运算方法,让Dollar类可以按照我们的预期进行金额操作。

2.2 测试代码

python">import unittestclass Dollar:def __init__(self, amount):self.amount = amountdef times(self, multiplier):return self.amount * multiplierclass TestDollarMultiplication(unittest.TestCase):def test_dollar_multiplication(self):five = Dollar(5)result = five.times(2)expected = 10self.assertEqual(result, expected)if __name__ == '__main__':unittest.main()

2.3 源码说明

在上述代码中,Dollar类包含一个构造函数__init__,它接受一个参数amount,并将其赋值给实例变量self.amount,用于初始化Dollar对象的金额。times方法接受一个乘数multiplier,通过将实例变量amountmultiplier相乘,返回乘法运算的结果。测试类TestDollarMultiplication继承自unittest.TestCasetest_dollar_multiplication测试用例创建了一个金额为5Dollar对象five,调用times方法进行乘法运算,将结果与预期值10进行比较,验证times方法的正确性。


http://www.ppmy.cn/news/1565281.html

相关文章

Wi-Fi 7、Wi-Fi 6 与 5G、4G 的全方位对比

随着无线通信技术的飞速发展,Wi-Fi 7、Wi-Fi 6,以及5G、4G 已经成为人们生活和工作中不可或缺的网络技术。无论是家庭网络、高速移动通信,还是工业物联网,这些技术都在发挥各自的作用。那么,它们之间有什么区别&#x…

网络安全行业岗位职责

系统安全需求分析师 综合能力 掌握常见的IT系统安全需求 具备总结分析整体网络安全需求及子系统安全需求的能力 具有良好的沟通、团队协作和主动性思考的能力 具备良好的技术文档编制能力 专业知识 熟悉网络、终端、数据、威胁情报、态势感知、流量威胁分析等产品的技术方…

详解Rust 中 String 和 str 的用途与区别

文章目录 1. 基本定义1.1 String1.2 str2. 存储位置与内存模型2.1 String2.2 str3. 用法与区别4. 使用场景4.1 使用 String 的场景4.2 使用 str 的场景5. String 和 str 的关系6. 代码示例分析6.1 从 &str 创建 String6.2 从 String 获取 &str6.3 拼接字符串6.4 静态存…

大华Java开发面试题及参考答案 (上)

TCP 的三次握手和四次挥手过程中各个状态的细节是怎样的? TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输层协议,其三次握手和四次挥手过程涉及多个状态,以下是详细的状态细节: 三次握手…

Ubuntu22.4挂载大于2.2T磁盘(27T大磁盘)

一、查看磁盘信息 sudo fdisk -l 二、创建文件系统 sudo mkfs.xfs /dev/sdX 三、获取磁盘的 UUID sudo blkid /dev/sdX 四、创建挂载点 sudo mkdir -p /data /dev/sdb: UUID"d01bbb50-28be-4328-bf18-111111111" BLOCK_SIZE"4096" TYPE"xfs&quo…

Whisper-GPT:混合表征音频大语言模型

Whisper-GPT:混合表征音频大语言模型 当下,利用从神经压缩算法(例如#Encodec#​)派生的离散音频标记的生成式音频、语音以及音乐模型数量激增。然而,这种方法的主要缺陷之一在于对上下文长度的处理。如果必须考虑所有不同频率的音频内容才能进行下一个标记预测,那么高保…

5-1 创建和打包AXI Interface IP

创建和打包AXI Interface IP的前流程和后流程 step 1 : 选择类型 1: 将当前的工程打包成IP 2: 将当前的BD工程打包成IP 3: 将指定的源码打包成IP 4: 创建一个新的AXI 接口IP 其中3和4是比较常用的,本次…

【算法】集合List和队列

阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 零:集合,队列的用法 一:字母异位词分组 二:二叉树的锯…