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

写在前面


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


问题背景说明

在初步实现货币加法运算的测试用例后,需要具体实现加法功能的代码。然而,初步实现可能只考虑了简单的同币种相加情况,后续还需要考虑更多复杂情况。通过逐步完善加法运算功能,能够提高货币类在实际应用中的适用性和准确性。

初步编写测试用例后,我们需要在Money类中实现加法功能,使测试通过,这是Python TDD实践的关键环节。

12.1 思路说明

在Money类中定义plus方法来实现货币加法。由于目前只考虑同币种相加,所以直接将两个货币对象的金额相加,货币类型保持不变。

12.2 测试代码

python 复制代码
import unittest


class Money:
    def __init__(self, amount, currency):
        self.amount = amount
        self.currency = currency

    def 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方法进行加法运算,并验证结果。

相关推荐
AI模型调用笔记16 小时前
Copilot Fusion:用 Python 跑通模型级联
人工智能·驱动开发·语言模型·copilot
mounter6251 天前
深入理解 gccrs:GCC 如何实现 Rust 编译器,以及编译 Linux 内核面临的挑战
linux·驱动开发·rust
硅基手札2 天前
CAN 技术系列 04 · CAN 帧格式
驱动开发·嵌入式开发·通信协议·can总线
万物智能信息科技3 天前
六轴传感器Motion驱动框架开发—【万物智能之开源鸿蒙OpenHarmony系统实战开发系列教程】
驱动开发·华为·开源·harmonyos·鸿蒙
AMASENSYS艾马斯3 天前
变频器滤波器选型与EMC合规建议
驱动开发·单片机·其他·硬件工程·精益工程
沃普天科技4 天前
100W 氮化镓充电器充电头扩展坞一体化设计,实用性翻倍
驱动开发·计算机外设·音视频·硬件工程·pcb工艺
lisw055 天前
算法与软件的本质区别
驱动开发·算法·数学建模
泡海椒5 天前
JQuick-SQL “数据源 SPI”辨析:应用适配器与 Function SPI 的正确边界
数据库·驱动开发·sql
万物智能信息科技5 天前
Zigbee透传驱动开发—【万物智能之开源鸿蒙OpenHarmony系统实战开发系列教程】
驱动开发·华为·开源·harmonyos·鸿蒙
AMASENSYS艾马斯5 天前
低压变频器输入输出电抗器选型指南
驱动开发·单片机·机器学习·硬件工程·精益工程