如何使用 Python 单元测试模块修补属于类的字典的值?



让我举个例子:

class Devices:
the_dict = {'apple': some_class(), 'android': some_class()}

在这个例子中,我想修补some_class((。

我不能模拟类本身(在本例中是设备(,因为这将是我首先要测试的类。

我已经尝试通过修补字典本身来解决这个问题,但模拟无法识别不同键和值之间的差异。例如,假设我创建了一个名为mocked_dict的模拟,测试看不到mocked_dict['alpha'] 和mocked_dict['beta']之间的区别。我也尝试过patch.dict,但无济于事。我只在使用return_value时收到属性错误。

任何帮助将不胜感激。谢谢!

不确定这是否是您要查找的内容,但请考虑添加一个帮助程序方法mock_device_dict以对给定Devices实例的字典进行猴子修补:

import unittest
from unittest.mock import Mock

class some_class:
pass

class Devices:
the_dict = {'apple': some_class(), 'android': some_class()}

class MyTest(unittest.TestCase):
def mock_device_dict(self, devices_instance):
devices_instance.the_dict = {k: Mock() for k in devices_instance.the_dict}
return devices_instance

def test_device(self):
devices = Devices()
self.mock_device_dict(devices)
# continue with your test here ...

if __name__ == '__main__':
unittest.main()

相关内容

  • 没有找到相关文章

最新更新