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

devtools/2025/1/23 6:08:10/

写在前面


这本书是我们老板推荐过的,我在《价值心法》的推荐书单里也看到了它。用了一段时间 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/devtools/152803.html

相关文章

【开发日记】微信小程序getBackgroundAudioManager播放背景音乐提示播放失败

【问题】 小程序在手机上打开,播放在线音频的时候会提示播放失败,但打印异常提示的是src为null,自己在打印的时候却没问题。 并且在微信开发者工具中播放的时候也是正常的,只有手机上打开使用时提示异常。 【解决】 如果你的链…

如何使用 reduce() 方法对数组进行聚合计算?

数组聚合计算:如何使用 reduce() 方法进行数组遍历和聚合? 在 JavaScript 中,reduce() 方法是数组遍历和聚合计算中非常强大的工具。它通过遍历数组中的所有元素,将数组中的每个元素逐步汇总成一个单一的输出值(如数值…

Spark任务提交流程

当包含在application master中的spark-driver启动后,会与资源调度平台交互获取其他执行器资源,并通过反向注册通知对应的node节点启动执行容器。此外,还会根据程序的执行规划生成两个非常重要的东西,一个是根据spark任务执行计划生…

python基础语句整理

Python是一种广泛使用的高级编程语言,以其简洁易读的语法而著称。以下是Python中的一些基础语句和概念,适合初学者了解: 1. 变量赋值 在Python中,变量用于存储数据值。变量名可以包含字母、数字和下划线,但不能以数字…

flutter入门系列教程<一>:tab组件的灵活妙用

文章目录 说明区分TabBarView组件TabBarViewTabBar实例 需求升级写在中间的tabbar组件封装组件组件说明组件用法示例 常规的tabbar封装常规用法 说明 前提:假设你已初步了解了flutter和dart语言,并且知道怎么创建一个简单的项目; 学习本文后…

代码随想录算法【Day29】

Day29 134. 加油站 暴力法 遍历每一个加油站为起点的情况&#xff0c;进行模拟 class Solution { public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {for(int i 0; i < cost.size(); i){ //以谁为起点int rest gas[i] - cos…

HDFS HADOOP分布式文件系统

目录 一、 HDFS概述 1.1 HDFS简介 1.2 HDFS优缺点 1.2.1 优点 1.2.2 缺点 1.3 HDFS组成架构 1.4 HDFS文件块大小 二、HDFS的Shell操作&#xff08;开发重点&#xff09; 2.1 基本语法 2.2 命令大全 2.3 常用命令实操 2.3.1 上传 2.3.2 下载 2.3.3 HDFS直接操作 三、HDFS的API操…

C++|开源日志库log4cpp和glog

文章目录 log4cpp 和 glog对比1. **功能对比**2. **易用性和配置**3. **性能**4. **线程安全**5. **日志输出**6. **功能扩展**7. **适用场景**8. **总结** 其它开源C日志库1. **spdlog**2. **easylogging**3. **Boost.Log**4. **loguru**5. **Poco Logging**6. **Qt Logging (…