Hello everyone,

I'm working on a Django application which needs to communicate with a 
3rd-party REST API. In production the flow would be like this;

   1. end-user browser sends a request to my django server
   2. my server makes a remote REST call to 3rd party server
   3. 3rd party server responds
   4. my server sends back response to end-user's browser

I'm simulating the above flow during development by using the Httpretty 
mocking library. Here is how my view looks like;

import httpretty

THIRD_PARTY_SERVER = http://api.gitlab.com/

def my_view(request):
    if settings.DEBUG:
        httpretty.enable()
        httpretty.register_uri(httpretty.GET, THIRD_PARTY_SERVER, 
body='{some_mock_response_here}')

    partner_response = requests.get(THIRD_PARTY_SERVER)

    if settings.DEBUG:
        httpretty.disable()
        httpretty.reset()

    # Do some stuff here
    # ...

    return render(request, 'template.html', context)



For the most part, the above works. I can experiment around without hitting 
the 3rd-party API. But it doesn't feel good. My mocking code is now part of 
the view function - not what I consider a good design. Problem is, I'm not 
sure how else this can be done? Does anyone have any better ideas? Note - 
I'm not doing any testing here. Just need a way to mock 3rd-party REST 
responses during development when I run "python manage.py runserver" for 
debugging/experimentation. 

Ideally, I'd like to move all the mocking code to it's own file and away 
from my views. This should somehow get activated when I start 'runserver' 
and work for all my views. 

Puzzled,
Abraham V.






-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/59821a72-3471-4a9a-affd-3875d28e3a03%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to