我正在为一个基于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
关键问题在于get_data()
中的call_external_API()
。
当我编写单元测试时,我不想真的调用外部API来获取数据。首先,那会花我的钱;其次,我可以在另一个测试文件中轻松地测试该API。
我还可以通过为get_data()
方法编写一个单元测试,并模拟call_external_API()
的输出来轻松测试此方法。
但是,当我测试整个基于类的视图时,我只需执行以下操作
self.client.get('/example/url/')
并检查状态码和上下文数据以验证其正确性。
在这种情况下,当我测试整个基于类的视图时,我如何模拟这个call_external_API()
呢?