Как использовать Mock для тестирования Twitter API в Django

Я совсем недавно начал работать с Django в рамках своей работы. Я совершенно новичок в этом, и я работал над практическим проектом, изучая джанго.

Я прошу пользователя ввести фразу или слово в строку поиска, и я возвращаю 50 результатов из твиттера, которые содержат эти слова в сообщении о состоянии. Код работает нормально, и я провел для него модульное тестирование. Теперь я хотел протестировать API Twitter (Twython), который я использую, и я понял, что могу использовать Mock или патч для этого, но я не могу понять, как это сделать. Я прочитал пару документов по Mocking, но не очень хорошо это понял.

Вот фрагмент моего кода

поиск по определению (запрос):

searches = []
query = ""
if request.method == "POST":
    twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
    query = request.POST.get('q', '')
    search_results = twitter.search(q=query, count=50)

    for tweet in search_results['statuses']:
        tweets = "Date : %s,\n Tweet : %s" % (tweet['created_at'], tweet['text'])
        searches.append(tweets)

return render(request, "search.html", {
    "results": searches,
    "query1": query
})

Может кто-нибудь предложить, как я могу проверить эту строку, используя mock:

search_results = twitter.search(q=query, count=50)

person Arpit    schedule 10.10.2013    source источник


Ответы (1)


Похоже, вы спрашиваете: «Как мне исправить Twython, чтобы twitter.search(...) возвращал список, который я указываю, и/или проверял, с чем он был вызван»?

Если это так, вы можете исправить класс Twython в своем тесте с помощью макета, а затем сделать свои утверждения об этом. Что-то типа:

with patch("yourapp.views.view_module.Twython") as twython_mock:
    twython_mock.return_value.search.return_value = {} # What you want to set the search call to return
    # Call your view function

twython_mock.assert_called_with(...) # If you want to check what was called in line 4
twython_mock.return_value.search.assert_called_with(...) # If you want to check what q and count are
person Dan    schedule 14.10.2013