网站点击率原因,安徽住房和城乡建设厅新网站,跨境电商流程,网络营销公司案例写在前面 这本书是我们老板推荐过的#xff0c;我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后#xff0c;我突然思考#xff0c;对于测试开发工程师来说#xff0c;什么才更有价值呢#xff1f;如何让 AI 工具更好地辅助自己写代码#xff0c;或许…写在前面 这本书是我们老板推荐过的我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后我突然思考对于测试开发工程师来说什么才更有价值呢如何让 AI 工具更好地辅助自己写代码或许优质的单元测试是一个切入点。 就我个人而言这本书确实很有帮助。第一次读的时候很多细节我都不太懂但将书中内容应用到工作中后我受益匪浅。比如面对一些让人抓狂的代码设计时书里的方法能让我逐步深入理解代码的逻辑与设计。 作为一名测试开发工程师我想把学习这本书的经验分享给大家希望能给大家带来帮助。因为现在工作中大多使用 Python 代码所以我把书中JAVA案例都用 Python 代码进行了改写 。 问题背景说明
在之前定义货币对象相等性时仅考虑金额相等可能不够全面。当存在多种货币类时不同货币对象即使金额相同也不应视为相等。解决这个问题可以避免在涉及多种货币的操作中出现逻辑混淆确保程序在处理货币比较时的准确性和合理性。
在Python TDD中当涉及到不同货币类如Dollar和Franc对象的相等性比较时会遇到一些问题。我们需要完善相等性比较的逻辑确保比较结果的正确性。
9.1 思路说明
之前定义的Dollar和Franc类的相等性判断仅基于金额这在不同货币类之间比较时是不准确的。我们需要在相等性判断中加入货币类型的比较只有当货币类型相同且金额相等时两个货币对象才被认为相等。
9.2 测试代码
import unittestclass Money:def __init__(self, amount):self.amount amountdef __eq__(self, other):if isinstance(other, Money):return self.amount other.amount and self.__class__ other.__class__return Falseclass Dollar(Money):def __init__(self, amount):super().__init__(amount)class Franc(Money):def __init__(self, amount):super().__init__(amount)class TestMoneyEquality(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)def test_different_currency_inequality(self):dollar Dollar(5)franc Franc(5)self.assertNotEqual(dollar, franc)if __name__ __main__:unittest.main()9.3 源码说明
在Money类的__eq__方法中我们在判断对象是否相等时除了比较金额self.amount other.amount还增加了比较对象的类类型self.__class__ other.__class__。这样只有当两个对象都是Money类的子类且金额相等时才认为它们相等。在测试类TestMoneyEquality中test_dollar_equality和test_dollar_inequality测试用例分别验证了Dollar对象的相等和不相等情况test_different_currency_inequality测试用例验证了不同货币类Dollar和Franc对象不相等的情况确保相等性判断逻辑的正确性。