2 つのクラス インスタンスを互いに比較しています。以下は私のサンプルテストコードです:
from unittest import TestCase
class Dog:
age: int
name: str
def __eq__(self, other):
if not isinstance(other, Dog):
return False
return self.age == other.age and self.name == other.name
class MyTests(TestCase):
def test_compare(self):
d1 = Dog()
d1.age = 1
d1.name = 'dog1'
d2 = Dog()
d2.age = 2
d2.name = 'dog2'
self.assertEqual(d1, d2)
これにより、アサーション エラーが生成されます。
AssertionError: <test.Dog object at 0x0000020444FCA520> != <test.Dog object at 0x0000020444F97D60>
2 つのインスタンスを直接比較して、アサーションの失敗の原因となったフィールドなど、より役立つエラー メッセージを取得する方法はありますか? 私が見つけた唯一の方法は、以下のようにフィールドを直接比較することです。面倒ではない方法はありますか?
self.assertEqual(d1.age, d2.age)
self.assertEqual(d1.name, d2.name)