【发布时间】:2015-05-03 06:00:52
【问题描述】:
我正在为基于 Django 类的视图编写单元测试。
class ExampleView(ListView):
def get_context_data(self, **kwargs):
context = super(EampleView, self).get_context_data(**kwargs)
## do something else
def get_queryset(self, **kwargs):
return self.get_data()
def get_data(self):
call_external_API()
## do something else
关键问题是call_external_API() 在get_data()。
在编写单元测试时,我并不想调用外部 API 来获取数据。首先,这将花费我的钱;其次,我可以轻松地在另一个测试文件中测试该 API。
我还可以轻松地测试这个get_data() 方法,只对其进行单元测试并模拟call_external_API() 的输出。
但是,当我测试整个基于类的视图时,我会这样做
self.client.get('/example/url/')
并检查状态代码和上下文数据以验证它。
在这种情况下,我在测试整个基于类的视图时如何模拟这个call_external_API()?
【问题讨论】:
-
不确定您的两种情况有什么区别。为什么不能以同样的方式模拟它?
标签: python django unit-testing mocking