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

news/2025/1/21 0:01:31/

写在前面


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

问题背景说明

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

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

12.1 思路说明

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

12.2 测试代码

import unittestclass Money:def __init__(self, amount, currency):self.amount = amountself.currency = currencydef 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方法进行加法运算,并验证结果。


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

相关文章

OCC+vtk参考Analysis situs

官网: Manifold Geometry // Многообразная Геометрия GIT开源源码下载链接: Quaoar / AnalysisSitus GitLab gitgitlab.com:ssv/AnalysisSitus.git 软件下载链接: Analysis Situs | Analysis Situs Forums ht…

使用Emgu.CV将tif保存视频,并用AxWindowsMediaPlayer打开

1. 使用Emgu.CV将tif保存视频,非常简单 打开: VideoWriter writer new VideoWriter(name, VideoWriter.Fourcc(M, J, P, G), displayRate, new Size(width, height), false); 写入 writer.Write(mat); 关闭 writer.Dispose(); 完整代码如下&#…

青少年CTF练习平台 EasyMD5解题思路

题目 EasyMD5 PHP弱类型/弱等于的判断 翻译 上传之后网页提示:Not a PDF! angry!!! get out from my page 修改文件后缀为pdf 再次上传,答案出来了 s878926199a s155964671a 成功获取flag

【18】Word:明华中学-儿童医保❗

目录 题目​ NO2 NO3 NO4 NO5 NO6 NO7 NO8 NO9 题目 NO2 布局→页面设置对话框→纸张方向:横向→纸张大小:A3 ;页面设置对话框:直接输入纸张大小的宽度和高度即可→页面设置对话框:上下左右边距→版式&…

thinkphp:实现压缩文件上传、解压、文件更名、压缩包删除功能,增加trycatch

代码 public function upload_firstsure() {try {// 检查是否有文件上传if (!isset($_FILES[file]) || !is_uploaded_file($_FILES[file][tmp_name])) {throw new \Exception(未接收到文件或文件上传失败);}// 获取上传的文件$uploaded_file $_FILES[file][tmp_name];$file_t…

计算机网络 第一章 概述 1.5

1.5 计算机网络体系结构 1.5.1 常见的三种计算机网络体系结构 为了使不同体系结构的计算机网络都能互连起来,国际标准化组织于1977年成立了专门机构研究该问题,他们提出了一个使全世界各种计算机可以互连成网的标准框架——开放系统互连基本参考模型&am…

PyTorch迁移学习与指南框架

前言: 在深度学习领域,迁移学习是一种强大的技术,它允许我们利用在大规模数据集上预训练的模型来解决数据规模较小的新任务。本文将详细介绍PyTorch框架中的迁移学习基本概念及其在计算机视觉(CV)开发中的应用。 一、…

怎样应对发现的小红书笔记详情API安全风险?

及时切断风险源 暂停 API 访问权限:一旦发现安全风险,如可疑的 API 调用行为(异常高的请求频率、来自未授权 IP 地址的访问等),首先要做的是暂停可能涉及风险的 API 访问权限。如果是通过 API 密钥进行访问控制&#x…