2024-05-29 10:54:24 发布
网友
在python代码中,我有全局requests.session实例:
requests.session
import requests session = requests.session()
我怎么能用Mock来模仿它呢?这种操作有装修工吗?我试着跟随:
Mock
session.get = mock.Mock(side_effect=self.side_effects)
但是(正如预期的那样),这段代码在每次测试后都不会像decorator那样将session.get返回到原始状态。
session.get
使用mock.patch修补模块中的会话。这里是一个完整的工作示例https://gist.github.com/k-bx/5861641
mock.patch
从前面的答案中得到了一些启发:
mock-attributes-in-python-mock
我可以模拟这样定义的会话:
class MyClient(object): """ """ def __init__(self): self.session = requests.session()
(调用get返回一个状态为的响应,属性设置为200)
def test_login_session(): with mock.patch('path.to.requests.session') as patched_session: # instantiate service: Arrange test_client = MyClient() type(patched_session().get.return_value).status_code = mock.PropertyMock(return_value=200) # Act (+assert) resp = test_client.login_cookie() # Assert assert resp is None
由于requests.session()返回会话类的实例,因此也可以使用patch.object()
from requests import Session from unittest.mock import patch @patch.object(Session, 'get') def test_foo(mock_get): mock_get.return_value = 'bar'
使用
mock.patch
修补模块中的会话。这里是一个完整的工作示例https://gist.github.com/k-bx/5861641从前面的答案中得到了一些启发:
mock-attributes-in-python-mock
我可以模拟这样定义的会话:
(调用get返回一个状态为的响应,属性设置为200)
由于requests.session()返回会话类的实例,因此也可以使用patch.object()
相关问题 更多 >
编程相关推荐