我正在尝试切换到测试驱动的开发,但为此,我需要理解单元测试:)
我遇到了以下问题。我将结合使用Django rest framework和django-tenants。到目前一切尚好。但是,要测试创建租户所需的任何东西。
class Test1(TenantTestCase):
def setUp(self):
super().setUp()
self.client = TenantClient(self.tenant)一旦你这样做了,你的租户就设置好了。
但是,如果我要测试API,客户端是TenantClient,而不是APIClient。测试用例是TenantTestCase。
所以我的问题是。您如何将这两者结合起来?
发布于 2020-08-26 04:47:36
我最终选择了这个类:
from rest_framework.test import APIClient
class TenantAPIClient(APIClient):
def __init__(self, tenant, enforce_csrf_checks=False, **defaults):
super().__init__(enforce_csrf_checks, **defaults)
self.tenant = tenant
def get(self, path, data=None, follow=False, **extra):
if "HTTP_HOST" not in extra:
extra["HTTP_HOST"] = self.tenant.get_primary_domain().domain
return super().get(path, data, **extra)
def post(self, path, data=None, follow=False, **extra):
if "HTTP_HOST" not in extra:
extra["HTTP_HOST"] = self.tenant.get_primary_domain().domain
return super().post(path, data, **extra)
def patch(self, path, data=None, follow=False, **extra):
if "HTTP_HOST" not in extra:
extra["HTTP_HOST"] = self.tenant.get_primary_domain().domain
return super().patch(path, data, **extra)
def put(self, path, data=None, follow=False, **extra):
if "HTTP_HOST" not in extra:
extra["HTTP_HOST"] = self.tenant.get_primary_domain().domain
return super().put(path, data, **extra)
def delete(self, path, data=None, follow=False, **extra):
if "HTTP_HOST" not in extra:
extra["HTTP_HOST"] = self.tenant.get_primary_domain().domain
return super().delete(path, data, **extra)然后
class TestContentDeletion(TenantTestCase):
def setUp(self):
super().setUp()
self.c = TenantAPIClient(self.tenant)https://stackoverflow.com/questions/60416289
复制相似问题