I used https://pypi.python.org/pypi/requests-mock, but the mocking was done
on the testCase class, the view was written without if DEBUG or anything
similar

On Mon, May 25, 2015 at 3:33 PM, Abraham Varricatt <
[email protected]> wrote:

> 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
> <https://groups.google.com/d/msgid/django-users/59821a72-3471-4a9a-affd-3875d28e3a03%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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/CAFWa6tJkyPUex%2BzdErn3nnozeYtaM-fbdqoZfEq04b%3D3t2CtsQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to