第7章:Python TDD测试Franc对象乘法功能

embedded/2025/1/22 21:48:33/

写在前面


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

问题背景说明

当程序需要处理多种货币时,除了美元,其他货币(如法郎Franc)也需要类似的金额操作功能。以测试Franc对象的乘法功能为例,能够在已有Dollar类的开发基础上,进一步拓展货币类的功能范围,同时也能检验开发流程和测试方法在处理类似对象时的通用性和有效性。

当在Python TDD项目中需要处理新的货币对象Franc(法郎)时,我们可以借鉴之前Dollar对象的测试和开发经验。

7.1 思路说明

Franc对象与Dollar对象类似,都用于表示货币金额,并且需要具备金额乘法运算的功能。我们参考Dollar类的结构和测试方法,为Franc类编写测试用例,确保其乘法运算功能的正确性。

7.2 测试代码

python">import unittestclass Franc:def __init__(self, amount):self.amount = amountdef times(self, multiplier):return Franc(self.amount * multiplier)class TestFrancMultiplication(unittest.TestCase):def test_franc_multiplication(self):five = Franc(5)result = five.times(2)self.assertEqual(result.amount, 10)if __name__ == '__main__':unittest.main()

7.3 源码说明

Franc类的结构与Dollar类相似,包含构造函数__init__用于初始化金额,times方法用于进行金额乘法运算。测试类TestFrancMultiplication继承自unittest.TestCasetest_franc_multiplication测试用例创建了一个金额为5Franc对象five,调用times方法并传入乘数2,然后断言运算结果的金额是否等于10,以此验证Franctimes方法的正确性。


http://www.ppmy.cn/embedded/156158.html

相关文章

LeetCode:37. 解数独

跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:37. 解数独 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则&#xff…

Golang Gin系列-3:Gin Framework的项目结构

在Gin教程的第3篇,我们将讨论如何设置你的项目。这不仅仅是把文件扔得到处都是,而是要对所有东西的位置做出明智的选择。相信我,这些东西很重要。如果你做得对,你的项目会更容易处理。当你以后不再为了找东西或添加新功能而绞尽脑…

FPGA 开发工作需求明确:关键要点与实践方法

FPGA开发工作需求明确:关键要点与实践方法 一、需求明确的重要性 在FPGA开发领域,明确的需求是项目成功的基石。FPGA开发往往涉及复杂的硬件逻辑设计、高速信号处理以及与其他系统的协同工作。若需求不明确,可能导致开发过程中频繁变更设计…

Laravel 实战:用Carbon筛选最近15分钟内的数据

在开发基于时间的特性时,常常需要筛选出在特定时间范围内的记录。例如,在一个设备报告系统中,你可能需要获取最近15分钟内的设备报告。本文将介绍如何在 Laravel 中实现这一功能,包括如何使用 Carbon 和 Eloquent 查询来筛选 crea…

JavaWeb项目——查询角色列表到页面中——转发模式

一、知识点 1、req.getRequestDispatch与resp.sendRedirect跳转方式的比较 一、实现原理 1、req.getRequestDispatcher: 属于服务器端跳转,在服务器内部将请求转发给另一个资源(如另一个 Servlet 或 JSP 页面)。调用 getReques…

力扣10-搜索插入位置

一.题目 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2示例…

【vitePress】基于github快速添加评论功能(giscus)

一.添加评论插件 使用giscus来做vitepress 的评论模块,使用也非常的简单,具体可以参考:giscus 文档,首先安装giscus npm i giscus/vue 二.giscus操作 打开giscus 文档,如下图所示,填入你的 github 用户…

C#与AI的共同发展

C#与人工智能(AI)的共同发展反映了编程语言随着技术进步而演变,以适应新的挑战和需要。自2000年微软推出C#以来,这门语言经历了多次迭代,不仅成为了.NET平台的主要编程语言之一,还逐渐成为构建各种类型应用程序的强大工具。随着时…