Python 如何为django多租户应用程序编写测试?

Python 如何为django多租户应用程序编写测试?,python,django,unit-testing,multi-tenant,Python,Django,Unit Testing,Multi Tenant,我在django中有带有postgresql模式的多租户应用程序。我试图在租户文件夹“t002”中编写测试代码,如下所示: 但是当我使用python manage.py test path/t002/tests运行测试时,它正在为我的实际数据库创建一个测试数据库。假设我遵循这个So answer()并避免创建数据库,但我不确定我是否遵循了测试多租户django项目的正确路径。当我查看django租户模式docs()时,我很难掌握它。有人能告诉我如何开始对django多租户应用程序进行测试吗?请务

我在django中有带有postgresql模式的多租户应用程序。我试图在租户文件夹“t002”中编写测试代码,如下所示:

但是当我使用python manage.py test path/t002/tests运行测试时,它正在为我的实际数据库创建一个测试数据库。假设我遵循这个So answer()并避免创建数据库,但我不确定我是否遵循了测试多租户django项目的正确路径。当我查看django租户模式docs()时,我很难掌握它。有人能告诉我如何开始对django多租户应用程序进行测试吗?请务必检查上述代码是否正确


Specs-python==2.7,django==1.11,postgres==9.6取决于您在多租户应用程序中使用的隔离软件

如果使用不同的数据库设置或任何其他设置,则可以在测试中覆盖它们的测试版本

例如:

from django.test import override_settings

@override_settings(DATABASES=<...>)  # you can also load and/or override other settings for a specific application
class TestTenantSetup(TestCase):
    def setUp(self):
        Client.objects.create(
            name='t002',
            schema_name='t002', 
            domain_url='t002.cmpny.com'
            )

    def test_tenant_exists(self):
        client = Client.objects.get(name='t002')
        self.assertEquals(client.schema_name, "t002")

来自django.test import override\u设置的

@覆盖设置(数据库=)35;您还可以加载和/或覆盖特定应用程序的其他设置
类TestTenantSetup(TestCase):
def设置(自):
Client.objects.create(
name='t002',
模式_name='t002',
域名_url='t002.cmpny.com'
)
def测试租户存在(自身):
client=client.objects.get(name='t002')
self.assertEquals(client.schema_名称,“t002”)

请您在问题中添加其他信息。您似乎不希望创建测试数据库。你想要什么?让测试使用真实的数据库并在那里创建新行?是的,在这一部分,我已经检查了SO答案,但基本上如何为django多租户应用程序启动unittest是我的问题。上面的代码片段是我尝试测试租户设置的代码片段,这是正确的方法吗?或者我是否应该跟随其他人?我主要要求使用multi-tenancy@gelonida实际上我提到有一个覆盖DB创建的解决方案。但我想问的是,我们是应该像普通的Django单元测试那样进行,还是有其他方法来测试多租户系统?是的,将其视为普通的Django应用程序。一般来说,最好保持测试的简单性和独立性。如果需要测试Django应用程序内部应用程序之间的某些交互,请创建测试设置。它应该接近您在实际中使用的内容,但不需要超出测试范围的依赖项。
from django.test import override_settings

@override_settings(DATABASES=<...>)  # you can also load and/or override other settings for a specific application
class TestTenantSetup(TestCase):
    def setUp(self):
        Client.objects.create(
            name='t002',
            schema_name='t002', 
            domain_url='t002.cmpny.com'
            )

    def test_tenant_exists(self):
        client = Client.objects.get(name='t002')
        self.assertEquals(client.schema_name, "t002")