我通过在遗留数据库中创建行、运行导入并验证是否将正确的Django对象取回,来测试这个导入过程是否正常工作。测试的最后一部分通常看起来有点像:
actual = MyModel.objects.get(code=legacy_object_code)
expected = MyModel(
id=actual.id,
code=legacy_object_code,
other_property=other_value,
â¦
)
我必须从实际对象中提取ID,否则就无法测试这两个对象是否相等。但问题是
self.assertEqual(expected, actual)
永远成功!这是因为
Django object equality
定义为具有相同的类型和ID/PK。
def assert_model_instance_field_equality(self, expected, actual):
expected_dict = expected.__dict__
expected_dict.pop('_state')
actual_dict = actual.__dict__
actual_dict.pop('_state')
self.assertDictEqual(expected_dict, actual_dict)
我找不到这种
assertion method