Python 莫克尔赢了';t模拟请求会话

Python 莫克尔赢了';t模拟请求会话,python,unit-testing,Python,Unit Testing,我正在模拟使用库请求和使用请求的代码的行为。一场 但是,我无法使mocker模拟会话。get()方法: 从mocker导入mocker,任何 mocker=mocker() obj=mocker.proxy(“requests.Session”)#replace也不起作用 obj.get(“anyurl”) mocker.result(“mocksessionget”) mocker.replay() 导入请求 s=请求。会话() x=s.get(“任意URL”) session.get未被模

我正在模拟使用库请求和使用请求的代码的行为。一场 但是,我无法使mocker模拟会话。get()方法:

从mocker导入mocker,任何
mocker=mocker()
obj=mocker.proxy(“requests.Session”)#replace也不起作用
obj.get(“anyurl”)
mocker.result(“mocksessionget”)
mocker.replay()
导入请求
s=请求。会话()
x=s.get(“任意URL”)
session.get未被模拟,此代码抛出:

requests.exceptions.MissingSchema: Invalid URL u'anyurl'

似乎不可能直接模拟请求。会话

为了其他人的利益,我设法解决了这个问题:

requests_mock = mocker.replace("requests")
session_mock = mocker.mock()
requests_mock.Session()
mocker.result(session_mock)

您可能需要添加一些对mocker的调用,以使其满足ref计数的要求。

您可以安装一个测试适配器;请看一个给你一个现成的包。我会考虑的,但是McCKER应该做这个工作。似乎MOCKER。替换(“请求。session。GET”)工作,但它使测试变得非常复杂。你能给出一个小的答案吗?谢谢