2013-12-12 63 views
1

我打算模擬使用庫請求和使用請求的代碼的行爲。會議 但是我不能讓嘲笑者嘲笑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

您可以改爲安裝測試適配器;請參閱https://pypi.python.org/pypi/requests-testadapter,以獲取一個現成的包。 –

+0

我會考慮的,但嘲笑者應該做這項工作。 – ApriOri

+0

看來,mocker.replace(「requests.Session.get」)的作品,但它使測試非常複雜。 – ApriOri

回答

0

現在看來似乎是不可能的模擬請求。會話直接。

爲了他人的利益在這裏是我如何設法解決這個問題:

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

您可能需要幾個電話加入到模仿者,使其快樂與它的參考計數。