第8章:Python TDD处理货币类代码重复问题

发布于:2025-02-10 ⋅ 阅读:(66) ⋅ 点赞:(0)

写在前面


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

问题背景说明

在开发DollarFranc等多个货币类时,由于它们在功能和结构上存在相似性,很容易出现大量重复代码。这些重复代码不仅增加了代码量,还会使维护变得困难。通过处理代码重复问题,提取公共部分,能够提高代码的可读性和可维护性,减少潜在的错误和维护成本。
在Python TDD开发过程中,当存在多个类似的货币类(如DollarFranc)时,往往会出现代码重复的问题。我们需要对代码进行优化,减少重复代码,提高代码的可维护性。

8.1 思路说明

分析DollarFranc类中重复的代码部分,发现它们在结构和功能上有很多相似之处。我们可以创建一个通用的基类,将重复的代码提取到基类中,让DollarFranc类继承自这个基类,从而实现代码的复用。

8.2 测试代码

import unittest


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


class Dollar(Money):
    def __init__(self, amount):
        super().__init__(amount)


class Franc(Money):
    def __init__(self, amount):
        super().__init__(amount)


class TestMoney(unittest.TestCase):
    def test_dollar_inheritance(self):
        dollar = Dollar(5)
        self.assertEqual(dollar.amount, 5)

    def test_franc_inheritance(self):
        franc = Franc(10)
        self.assertEqual(franc.amount, 10)


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

8.3 源码说明

我们创建了Money基类,其中包含一个构造函数__init__用于初始化金额。Dollar类和Franc类都继承自Money类,通过super().__init__(amount)调用基类的构造函数来初始化金额。在测试类TestMoney中,test_dollar_inheritance测试用例验证了Dollar类继承后的金额初始化是否正确,test_franc_inheritance测试用例验证了Franc类继承后的金额初始化是否正确,确保继承关系和金额初始化功能的正确性。


网站公告

今日签到

点亮在社区的每一天
去签到