我有一个我尝试在测试中模拟的类。该课程位于server/cache.py
,看起来像:
class Storage(object):
def __init__(self, host, port):
# set up connection to a storage engine
def store_element(self, element, num_of_seconds):
# store something
def remove_element(self, element):
# remove something
此类用于server/app.py
,与此类似:
import cache
STORAGE = cache.Storage('host', 'port')
STORAGE.store_element(1, 5)
现在当我尝试在测试中模拟它时出现问题:
import unittest, mock
import server.app as application
class SomeTest(unittest.TestCase):
# part1
def setUp(self):
# part2
self.app = application.app.test_client()
如果我无法连接到存储,那么在测试期间这显然不起作用。因此,我必须通过在第1部分,第2部分和第39部分中编写内容来嘲笑它。
我试图用
来实现它@mock.patch('server.app.cache') # part 1
mock.side_effect = ... # hoping to overwriting the init function to do nothing
但它仍然试图连接到真正的主机。那么如何在这里正确模拟一个完整的类呢?附:我查看了many many questions,它看起来与我相似,但徒劳无功。