我正在为Django基于类的视图编写单元测试。Django UnitTest with Mock
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
的关键问题是get_data()
这call_external_API()
。
当我编写单元测试时,我并不想调用外部API来获取数据。首先,这会耗费我的钱;其次,我可以在另一个测试文件中轻松测试该API。
我也可以很容易地测试这个get_data()
方法只有一个单元测试,并模拟输出call_external_API()
。
然而,当我测试这整个基于类的观点,我只是会做
self.client.get('/example/url/')
,并检查状态代码和上下文数据来验证。
在这种情况下,我在测试整个基于类的视图时如何模拟这个call_external_API()
?
不知道你的两种情况有什么不同。为什么你不能以同样的方式嘲笑它? – 2015-03-02 20:27:53