为了账号安全,请及时绑定邮箱和手机立即绑定

requests.session 的模拟 cookie 属性

requests.session 的模拟 cookie 属性

桃花长相依 2021-10-10 10:57:09
Session.cookies是在 Session 构造函数中定义的,因此我无法模拟它。有什么办法可以嘲笑它吗?from requests import Sessionfrom settings import URLfrom unittest.mock import patch@patch.object(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()


查看完整回答
反对 回复 2021-10-10
  • 1 回答
  • 0 关注
  • 180 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信