我正在为django视图编写测试,一些视图正在进行外部HTTP请求。在运行测试时,我不想执行这些HTTP请求。因为在测试期间,正在使用的数据是虚拟的,并且这些HTTP请求将不会按预期运行。
可能的选择是什么?
答案 0 :(得分:2)
您可以覆盖测试中的设置,然后在视图中检查该设置。 Here是覆盖设置的文档。
from django.conf import settings
if not settings.TEST_API:
# api call here
然后你的测试会看起来像这样
from django.test import TestCase, override_settings
class LoginTestCase(TestCase):
@override_settings(TEST_API=True)
def test_api_func(self):
# Do test here
因为把它们放在那里会相当混乱我会建议创建一个看起来像这样的mixin。
class SensitiveAPIMixin(object):
def api_request(self, url, *args, **kwargs):
from django.conf import settings
if not settings.TEST_API:
request = api_call(url)
# Do api request in here
return request
然后,通过多重继承的力量,您需要向此api调用请求的视图可以执行与此类似的操作。
class View(generic.ListView, SensitiveAPIMixin):
def get(self, request, *args, **kwargs):
data = self.api_request('http://example.com/api1')
答案 1 :(得分:1)