Session.cookies是在 Session 構造函數中定義的,因此我無法模擬它。有什么辦法可以嘲笑它嗎?from requests import Sessionfrom settings import URLfrom unittest.mock import [email protected](Session, 'cookies', new='my custom mock object')def test_request(): assert function_that_uses_request_cookies()這引發 AttributeError: <class 'requests.sessions.Session'> does not have the attribute 'cookies'如果session在模塊作用域上定義了session實例,我可以直接修補實例。但session僅在function_that_uses_request_cookies范圍上定義。有沒有辦法修補函數作用域內的實例?
1 回答

泛舟湖上清波郎朗
TA貢獻1818條經驗 獲得超3個贊
如所寫,代碼將修補Session類的屬性,但您要做的是修補Session實例的屬性。要在不中斷會話行為的其他方面做到這一點,您可以創建一個模擬對象,將Session.
def test_request():
mock_session_klass = MagicMock(wraps=Session)
with patch('requests.Session', new=mock_session_klass):
session_instance = mock_session_klass.return_value
session_instance.cookies.return_value = 'my custom mock object'
assert function_that_uses_request_cookies()
添加回答
舉報
0/150
提交
取消