在 python 中更新模拟对象
update a mocked object in python
我创建了一个模拟对象,如下所示:
with patch('requests.get') as request:
self.request = request
self.request.session = MockSession()
self.request.cookies = {}
如何通过其他函数更新
如果要保存已打补丁的对象,您必须手动开始和停止打补丁。如果您使用上下文管理器(例如 with patch
),补丁将在退出范围时恢复。
您可以执行以下操作:
class TestSomething(unittest.TestCase):
def setUp(self):
self.patcher = patch('requests.get') # returns the patcher object
self.request = self.patcher.start() # returns the patched object
self.request.session = MockSession()
self.request.cookies = {}
def tearDown(self):
sef.patcher.stop()
def test_03_set_nonce(self):
self.web_session.set_nonce(self.request)
self.assertTrue(len(self.request.cookies) > 0, 'set_nonce failed.')
请注意,我没有检查实际测试 - 这取决于您的应用程序逻辑。
也可以直接在测试中打补丁:
@patch('requests.get')
def test_03_set_nonce(self, request):
request.session = MockSession()
request.cookies = {}
self.web_session.set_nonce(request)
self.assertTrue(len(request.cookies) > 0, 'set_nonce failed.')
我创建了一个模拟对象,如下所示:
with patch('requests.get') as request:
self.request = request
self.request.session = MockSession()
self.request.cookies = {}
如何通过其他函数更新
如果要保存已打补丁的对象,您必须手动开始和停止打补丁。如果您使用上下文管理器(例如 with patch
),补丁将在退出范围时恢复。
您可以执行以下操作:
class TestSomething(unittest.TestCase):
def setUp(self):
self.patcher = patch('requests.get') # returns the patcher object
self.request = self.patcher.start() # returns the patched object
self.request.session = MockSession()
self.request.cookies = {}
def tearDown(self):
sef.patcher.stop()
def test_03_set_nonce(self):
self.web_session.set_nonce(self.request)
self.assertTrue(len(self.request.cookies) > 0, 'set_nonce failed.')
请注意,我没有检查实际测试 - 这取决于您的应用程序逻辑。
也可以直接在测试中打补丁:
@patch('requests.get')
def test_03_set_nonce(self, request):
request.session = MockSession()
request.cookies = {}
self.web_session.set_nonce(request)
self.assertTrue(len(request.cookies) > 0, 'set_nonce failed.')