2

最近、仕事の一環として Django を使い始めました。私はまったくの初心者で、django を学びながら練習プロジェクトに取り組んでいました。

ユーザーに検索バーにフレーズまたは単語を入力するように依頼すると、ステータス メッセージにそれらの単語を含む 50 件の結果が Twitter から返されます。コードは正常に動作し、いくつかの単体テストを行いました。使用しているtwitter API(Twython)をテストしたかったのですが、モックまたはパッチを使用してそれを実行できることがわかりましたが、その方法を理解できません。モッキングに関するドキュメントをいくつか読みましたが、よく理解できませんでした。

ここに私のコードのスニペットがあります

デフォルト検索 (リクエスト):

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
})

誰かがモックを使用してこの行をテストする方法を提案できますか:

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

1 に答える 1

2

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
于 2013-10-14T17:04:23.387 に答える