在 Python 中测试类的正确方法是什么?

Bon*_*000 5 python testing unit-testing python-3.x python-unittest

有一个名为State具有多个属性的类,我需要为其编写单元测试。测试需要执行某些更改State实例属性值的操作。预期参数位于字典内部。单元测试将比较实例的属性State与字典的值是否相等。

问题是保存比较逻辑的最佳位置是什么?我在考虑两个选择:

  1. __eq__将方法添加到State包含比较逻辑的类。
  2. 在包含比较逻辑的测试模块内部添加辅助函数。

哪一个选项更好,为什么?

jos*_*nda 0

您可能应该采取这种__eq__方法。这样,如果需要,您还可以在将来测试实际代码中的相等性,同时如果您将来计划或可能使用类型注释,还可以避免导入辅助函数时可能出现的混乱情况。

通常,您根本不希望测试代码包含太多逻辑,因为测试的目的是测试代码,而不是实现可能需要自行测试的更多逻辑。除了实际的测试功能之外,您的测试套件应该非常简单。

我认为不采用这种方法的唯一原因是,如果您正在测试的类有一些独特的用例,其中 a__eq__不适用,并且您希望避免实现一个,并且可能会在以后让您自己或未来的开发人员感到困惑。