当前位置: 首页 > news >正文

第5章:Python TDD定义Dollar对象相等性

写在前面


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

问题背景说明

在货币类的开发中,判断两个货币对象是否相等是一个常见的操作。例如,在比较两个美元金额是否相等时,需要有明确的判断标准。如果没有正确定义相等性,可能会导致程序在进行货币比较、集合操作等场景下出现逻辑错误,影响程序的正确性。

在Python TDD中,定义对象的相等性对于确保代码的准确性和逻辑正确性至关重要。对于Dollar对象,我们需要明确在什么情况下两个Dollar对象被认为是相等的。

5.1 思路说明

通过实现__eq__方法(在Python中用于定义对象相等性的特殊方法),我们可以自定义Dollar对象的相等性判断逻辑。通常情况下,对于Dollar对象,当两个对象的金额相等时,我们认为它们相等。

5.2 测试代码

import unittestclass Dollar:def __init__(self, amount):self.amount = amountdef __eq__(self, other):if isinstance(other, Dollar):return self.amount == other.amountreturn Falseclass TestDollarEquality(unittest.TestCase):def test_dollar_equality(self):dollar1 = Dollar(5)dollar2 = Dollar(5)self.assertEqual(dollar1, dollar2)def test_dollar_inequality(self):dollar1 = Dollar(5)dollar2 = Dollar(10)self.assertNotEqual(dollar1, dollar2)if __name__ == '__main__':unittest.main()

5.3 源码说明

Dollar类中,__eq__方法首先使用isinstance函数判断传入的对象other是否为Dollar类的实例。如果是,则比较两个对象的amount属性是否相等;如果不是Dollar类的实例,则直接返回False。在测试类TestDollarEquality中,test_dollar_equality测试用例创建了两个金额都为5Dollar对象,验证它们是否相等;test_dollar_inequality测试用例创建了两个金额不同的Dollar对象,验证它们是否不相等,通过这两个测试用例确保__eq__方法的正确性。

http://www.lryc.cn/news/524140.html

相关文章:

  • nuxt3项目打包部署到服务器后配置端口号和开启https
  • MongoDB文档查询
  • 【GORM】初探gorm模型,字段标签与go案例
  • Windows下的Milvus安装秘籍:向量数据库轻松上手
  • 在GUI中添加一个Label
  • hive连接mysql报错:Unknown version specified for initialization: 3.1.0
  • Unity Shader学习日记 part5 CG基础
  • 第7章:Python TDD测试Franc对象乘法功能
  • 两级式三相光伏并网逆变器Matlab/Simulink仿真模型
  • redis性能优化参考——筑梦之路
  • Ubuntu 22.04 TLS 忘记root密码,重启修改的解决办法
  • HTML<bdo>标签
  • STM32+W5500+以太网应用开发+003_TCP服务器添加OLED(u8g2)显示状态
  • 【机器学习实战中阶】使用SARIMAX,ARIMA预测比特币价格,时间序列预测
  • 各语言镜像配置汇总
  • 细说STM32F407单片机电源低功耗StopMode模式及应用示例
  • PHP语言的循环实现
  • 求两个矩阵的乘积
  • 警惕IDEA 2024版重大Bug问题:LomBok失效、Gradle冲突、Spring Boot启动错误
  • Go语言的正则表达式
  • 通过ssh连接debian
  • 计算机创造的奇迹——C语言
  • 磁盘阵列服务器和普通服务器的区别
  • 搭建一个人脸识别pipeline
  • Docker 之mysql从头开始——Docker下mysql安装、启动、配置、进入容器执行(查询)sql
  • LeetCodeHOT100:60. n个骰子的点数、4. 寻找两个正序数组的中位数
  • apisix的authz-casbin
  • 数学基础 --线性代数之理解矩阵乘法
  • TCP Window Full是怎么来的
  • 【22】Word:小李-高新技术企业政策❗