首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >requests.session的模拟cookies属性

requests.session的模拟cookies属性
EN

Stack Overflow用户
提问于 2019-01-13 05:46:38
回答 1查看 858关注 0票数 1

Session.cookies是在会话构造函数中定义的,因此我不能模拟它。有什么方法可以嘲笑它吗?

代码语言:javascript
复制
from requests import Session
from settings import URL
from 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作用域上定义。有没有办法在函数作用域内修补实例?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-29 13:10:26

按照编写的方式,代码将修补Session类的属性,但您要做的是修补Session实例的属性。要做到这一点而不中断会话行为的其他方面,您可以创建一个包装Session的模拟对象。

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54164162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档