我正在尝试将我的实例方法的可调用更改MagicMock为 a,PropertyMock因为这就是它的访问方式(Django 模型列)。但是测试失败了 _mock_self = <PropertyMock name='get().my_prop' id='4524632776'>鉴于以下代码# viewdef get(self request): # stuff... obj = MyModel.objects.get(id=2) # more stuff... print(obj.my_prop) some_val = MyOtherModel(my_prop=obj.my_prop)# testsdef test_my_test(mocker): other_obj = mocker.patch("app.views.MyOtherModel") obj_get = mocker.patch("app.views.MyModel.objects.get") obj_prop = mocker.PropertyMock(return_value=1) # This should translate to an instance of MyModel i.e. MyModel().my_prop obj_get.return_value.my_prop = obj_prop # run view obj_prop.assert_called_once() # Says never invoked # Failed as my_prop was a PropertyMock instead of actual value other_obj.assert_called_once_with(my_prop=obj_prop)打印语句显示 <PropertyMock name='get().my_prop' id='4524632776'>所以看起来它是同一个实例,它实际上并没有被调用我也曾尝试直接修补模型的属性,但这似乎不起作用,因为Mocks它们不一样。def test_my_test(mocker): other_obj = mocker.patch("app.views.MyOtherModel") obj_prop = mocker.patch("app.views.MyModel.my_prop", new_callable=mocker.PropertyMock) obj_get = mocker.patch("app.views.MyModel.objects.get") obj_get.return_value.my_prop = obj_prop # run view obj_prop.assert_called_once() # Failed as my_prop was a PropertyMock instead of actual value other_obj.assert_called_once_with(my_prop=obj_prop) 哪个失败了..._mock_self = <PropertyMock name='my_prop' id='4543022192'>但打印 <MagicMock name='get().my_prop' id='4543752232'>编辑添加了更准确地描述实现的其他补丁
添加回答
举报
0/150
提交
取消