【问题标题】:How to use Mock to test Twitter API in Django如何在 Django 中使用 Mock 测试 Twitter API
【发布时间】:2013-10-15 01:04:23
【问题描述】:

我最近刚刚开始使用 Django 作为我工作的一部分。我对它完全陌生,我在学习 django 时正在做一个练习项目。

我要求用户在搜索栏中输入短语或单词,然后我从 twitter 返回 50 个结果,这些结果在状态消息中包含这些单词。代码运行良好,我已经对其进行了一些单元测试。现在我想测试我正在使用的 twitter API(Twython),我发现我可以使用 Mock 或补丁来完成它,但我无法理解如何去做。我已经阅读了一些关于 Mocking 的文档,但不能很好地理解它。

这是我的代码的 sn-p

def 搜索(请求):

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)

【问题讨论】:

    标签: django mocking twython


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2014-11-10
      • 1970-01-01
      • 2012-12-07
      • 1970-01-01
      • 2016-07-15
      • 2012-06-10
      • 2023-04-09
      • 2022-10-23
      • 2010-12-16
      相关资源
      最近更新 更多