0

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)
4

2 に答える 2