【发布时间】:2020-05-13 15:01:33
【问题描述】:
我正在尝试 mock 来自另一个库的类的现有对象,用于使用 pytest 进行单元测试。
但是,其他库中的属性(不是方法)大多是在运行时设置的。
我想要达到的目标
- 获得使用
spec模拟对象的所有好处 - 设置我的单元测试所需的(嵌套)属性(不是方法)以模拟它们在对象创建期间设置的效果
from unittest.mock import Mock
from otherlib import ClassName
def test_stuff():
mock_object = Mock(spec=ClassName)
mock_object.data.outward.key = 12345
assert mock_object.data.outward.key == 12345 # AttributeError: Mock object has no attribute 'data'
我在代码更改中进行了这些尝试,但没有成功
...
def test_stuff():
mock_object = Mock(spec=ClassName, **{'data.outward.key': 12345})
assert mock_object.data.outward.key == 12345
...
def test_stuff():
mock_object = Mock(spec=ClassName)
attrs = {'data.outward.key': 12345}
mock_object.configure_mock(**attrs)
assert mock_object.data.outward.key == 12345
【问题讨论】:
标签: python unit-testing mocking python-unittest python-unittest.mock