kk1957 kk1957 - 1 year ago 89
Python Question

python mock Requests and the response

I am a beginner to using mock in python and trying to use http://www.voidspace.org.uk/python/mock.
Please tell me the basic calls to get me working in below scenario. I am using pythons Requests module.

In my views.py, I have a function that makes variety of requests.get() calls with different response each time

def myview(request):
res1 = requests.get('aurl')
res2 = request.get('burl')
res3 = request.get('curl')

In my test class I want to do something like this but cannot figure out exact method calls

Step 1:

//Mock the requests module
//when mockedRequests.get('aurl') is called then return 'a response'
//when mockedRequests.get('burl') is called then return 'b response'
//when mockedRequests.get('curl') is called then return 'c response'

Step 2:

Call my view

Step 3:

verify response contains 'a response', 'b response' , 'c response'

Please help me to complete Step 1.

Answer Source

Here is what worked for me:

import mock
@mock.patch('requests.get', mock.Mock(side_effect = lambda k:{'aurl': 'a response', 'burl' : 'b response'}.get(k, 'unhandled request %s'%k)))