首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django-租户和djangorestframework测试

django-租户和djangorestframework测试
EN

Stack Overflow用户
提问于 2020-02-26 22:35:46
回答 1查看 183关注 0票数 1

我正在尝试切换到测试驱动的开发,但为此,我需要理解单元测试:)

我遇到了以下问题。我将结合使用Django rest frameworkdjango-tenants。到目前一切尚好。但是,要测试创建租户所需的任何东西。

代码语言:javascript
复制
class Test1(TenantTestCase):

def setUp(self):
    super().setUp()
    self.client = TenantClient(self.tenant)

一旦你这样做了,你的租户就设置好了。

但是,如果我要测试API,客户端是TenantClient,而不是APIClient。测试用例是TenantTestCase。

所以我的问题是。您如何将这两者结合起来?

https://django-tenants.readthedocs.io/en/latest/test.html

EN

回答 1

Stack Overflow用户

发布于 2020-08-26 04:47:36

我最终选择了这个类:

代码语言:javascript
复制
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)

然后

代码语言:javascript
复制
class TestContentDeletion(TenantTestCase):
    def setUp(self):
        super().setUp()
        self.c = TenantAPIClient(self.tenant)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60416289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档