![](/img/trans.png)
[英]How do I structure my tests with the Python 'unittest' module?
[英]How do I patch the values of a dictionary that belongs to a class with the Python unittest module?
讓我舉個例子:
class Devices:
the_dict = {'apple': some_class(), 'android': some_class()}
在這個例子中,我想修補some_class() 。
我無法模擬 class 本身(在本例中為Devices ),因為那將是我首先要測試的 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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.