无法访问 运行 时设置的模拟属性
Unable to access mock attributes that were set while running
我 运行 对带有模拟对象的方法进行了一些单元测试。在方法中设置了属性,但我似乎无法在单元测试中访问它们。当我尝试取回模拟对象时,不是我尝试访问的字符串
这是我的单元测试
@mock.patch("bpy.data.cameras.new")
def test_load_camera(self, mock_camera_data):
loader = self.SceneLoader(self.json_data)
self.mock_bpy.context.scene.objects.link.return_value = 5
cam_data = {"name": "camera 1",
"type": "PERSP",
"lens_length": 50.0,
"lens_unit": "MILLIMETERS",
"translation": [
4.5,
74,
67
],
"rotation": [
-0.008,
-0.002,
0.397,
0.918
]
}
data = mock.Mock()
mock_camera_data.return_value = data
loader._load_camera(cam_data)
assert mock_camera_data.called_with("Camera")
assert data.type == "PERSP"
我测试的方法是
def _load_camera(self, cam_data):
camera_data = bpy.data.cameras.new("Camera")
camera_data.type = cam_data["type"]
当我运行进行单元测试时,我得到这个错误
AssertionError: assert <Mock name='new().type' id='140691645666360'> == 'PERSP'
E + where <Mock name='new().type' id='140691645666360'> = <Mock name='new()' id='140691645594760'>.type```
想通了。我需要做配置模拟所以代码现在看起来像
data = mock.Mock()
data.configure_mock(type=None)
mock_camera_data.return_value = data
loader._load_camera(cam_data)
您需要先在模拟中 configure/set 该属性,以便稍后访问它。现在可以在方法 运行
之后访问属性 "type"
我 运行 对带有模拟对象的方法进行了一些单元测试。在方法中设置了属性,但我似乎无法在单元测试中访问它们。当我尝试取回模拟对象时,不是我尝试访问的字符串
这是我的单元测试
@mock.patch("bpy.data.cameras.new")
def test_load_camera(self, mock_camera_data):
loader = self.SceneLoader(self.json_data)
self.mock_bpy.context.scene.objects.link.return_value = 5
cam_data = {"name": "camera 1",
"type": "PERSP",
"lens_length": 50.0,
"lens_unit": "MILLIMETERS",
"translation": [
4.5,
74,
67
],
"rotation": [
-0.008,
-0.002,
0.397,
0.918
]
}
data = mock.Mock()
mock_camera_data.return_value = data
loader._load_camera(cam_data)
assert mock_camera_data.called_with("Camera")
assert data.type == "PERSP"
我测试的方法是
def _load_camera(self, cam_data):
camera_data = bpy.data.cameras.new("Camera")
camera_data.type = cam_data["type"]
当我运行进行单元测试时,我得到这个错误
AssertionError: assert <Mock name='new().type' id='140691645666360'> == 'PERSP'
E + where <Mock name='new().type' id='140691645666360'> = <Mock name='new()' id='140691645594760'>.type```
想通了。我需要做配置模拟所以代码现在看起来像
data = mock.Mock()
data.configure_mock(type=None)
mock_camera_data.return_value = data
loader._load_camera(cam_data)
您需要先在模拟中 configure/set 该属性,以便稍后访问它。现在可以在方法 运行
之后访问属性 "type"