django - 在 Django 中对执行外部服务调用的 View 进行单元测试时,什么是好的做法

标签 django unit-testing testing unittest2

我们有这样的 View :

from fblib import Facebook

def foo(request):
    fb = Facebook( settings.facebook )
    data = fb.get_thingy()
    return render_to_response( .. , data, .. )

测试它的好方法是什么?由于 View 自行获取资源,我不确定如何模拟 Facebook。我想到的一种替代方法是创建一个假的 Facebook 服务器并在设置中提供连接详细信息。所以我们得到一个看起来像这样的单元测试:

from fakebook import FakeFacebookServer

class ViewsFooTests(TestCase):
    def set_up( self ):
        self.facebook = FakeFacebookServer().start()

    def test_foo_connect( self ):
        response = self.client.get('/foo')
        self.assertEquals( response.status_code, 200 )

我遇到的问题是,制作一个假的 Facebook 服务器似乎很麻烦。理想情况下,我宁愿能够模拟 Facebook.get_thingy 方法。有什么建议吗?

最佳答案

您可以从您的测试中修改您的 View 模块以模拟您的库:

# tests.py
import myapp.views
...

    def setUp(self):
        myapp.views.Facebook = FaceBookMock

关于django - 在 Django 中对执行外部服务调用的 View 进行单元测试时,什么是好的做法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6561765/

相关文章:

javascript - 单元测试 React JSX ES6

java - Mockito 监视被单元测试的对象

java - 为什么 Spring TestExecution ExceptionHandler Tests 的 ATestClass 的测试不会失败?

django - 如何让 celerybeat cron 任务在 django 应用程序的 docker 容器中运行?

mysql - 如何使用在 jython 上运行的 django 创建图像缩略图?

python - 如何正确地对 FileNotFoundError 进行单元测试

Laravel 黄昏 : test file upload with Dropzone. js

ruby-on-rails - rSpec Shoulda 匹配器测试验证

python - 在 Django Rest api 中,当互联网连接速度较慢时更新数据

python - 在 Django 中结合 ~Q 和 F?