python - Python assert_has_calls 失败,对象参数的属性顺序不同
问题描述
我有这样的断言-
obj_instance_1 = SomeType(a=1,b=2,c=3)
//invoke the test function
mock_calls = [
mock.call(param1=obj_instance_1, param2=mocked_obj),
mock.call(param1=obj_instance_1, param2=mocked_obj),
]
mock_instance.assert_has_calls(mock_calls)
assert_has_calls
断言失败并出现错误-
Expected: [call(param2=<MagicMock name='SomeName' id='140133686336928'>, param1=<SomeType(a=1,b=2,c=3)>),
call(param2=<MagicMock name='SomeName' id='140133686336928'>, param1=<SomeType(a=1,b=2,c=3)>)]
Actual:
[call(param2=<MagicMock name='SomeName' id='140133686336928'>, param1=<SomeType(b=2,a=1,c=3)>),
call(param2=<MagicMock name='SomeName' id='140133686336928'>, param1=<SomeType(b=2,a=1,c=3)>)]
我看到的唯一区别是 param1 对象的属性顺序在预期和实际中不同。但是对象的属性值是相同的。为什么会导致测试失败?
解决方案
推荐阅读
- c# - EF Core 中的导航映射问题
- point-cloud-library - 我无法在 google colab 上执行 pptk.viewer()
- r - 根据 R 中预定义数据类型的数据框更改每个数据框列的数据类型
- javascript - Javascript,如何在循环中每秒同步调用函数?
- flutter - 在 dart _type 错误中解析模型类中的数据?
- python - Python。检查输入是否与请求结构相同
- jquery - 选中复选框的递增/递减计数
- sql-server - 如何在 Designer 窗口中为 Alter Table 生成完整的 DML T-SQL 命令?(包括 DATABASE INSERT 等)
- hyperledger-fabric - 是否可以使用 Hyperledger Fabric 的排序服务来交换其他消息?
- android - 如何使用 Kotlin 验证两个 arrayList 中的相等性