mocker不会模拟请求会话

时间:2013-12-12 10:47:00

标签: python unit-testing

我想模仿使用库请求和使用请求的代码的行为。会议 但是我不能让mocker模拟Session.get()方法:

from mocker import Mocker, ANY
mocker = Mocker()
obj = mocker.proxy("requests.Session") #replace didn't work either
obj.get("anyurl")
mocker.result("mocksessionget")
mocker.replay()
import requests
s = requests.Session()
x = s.get("anyurl")

session.get未被模拟,此代码抛出:

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

1 个答案:

答案 0 :(得分:0)

似乎无法直接模拟requests.Session。

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

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

您可能需要向mocker添加一些调用,以使其对它的引用计数感到满意。