diff options
| author | Christopher Adams <christopher.r.adams@gmail.com> | 2022-06-25 17:15:55 -0400 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2022-06-27 11:29:21 +0200 |
| commit | 90d2f9f41671ef01c8e8e7b5648f95c9bf512aae (patch) | |
| tree | dddbdfa82bbd4f9ddbfbe9bb06a5bc04302b88fa /docs/internals/contributing/writing-code/unit-tests.txt | |
| parent | b2eff16806057095c7dd3daa9402ad615e51627f (diff) | |
Fixed #33422 -- Improved docs about isolating apps.
Diffstat (limited to 'docs/internals/contributing/writing-code/unit-tests.txt')
| -rw-r--r-- | docs/internals/contributing/writing-code/unit-tests.txt | 63 |
1 files changed, 2 insertions, 61 deletions
diff --git a/docs/internals/contributing/writing-code/unit-tests.txt b/docs/internals/contributing/writing-code/unit-tests.txt index 62a3e31462..6b1c735ba4 100644 --- a/docs/internals/contributing/writing-code/unit-tests.txt +++ b/docs/internals/contributing/writing-code/unit-tests.txt @@ -522,25 +522,8 @@ Isolating model registration To avoid polluting the global :attr:`~django.apps.apps` registry and prevent unnecessary table creation, models defined in a test method should be bound to -a temporary ``Apps`` instance:: - - from django.apps.registry import Apps - from django.db import models - from django.test import SimpleTestCase - - class TestModelDefinition(SimpleTestCase): - def test_model_definition(self): - test_apps = Apps(['app_label']) - - class TestModel(models.Model): - class Meta: - apps = test_apps - ... - -.. function:: django.test.utils.isolate_apps(*app_labels, attr_name=None, kwarg_name=None) - -Since this pattern involves a lot of boilerplate, Django provides the -:func:`~django.test.utils.isolate_apps` decorator. It's used like this:: +a temporary ``Apps`` instance. To do this, use the +:func:`~django.test.utils.isolate_apps` decorator:: from django.db import models from django.test import SimpleTestCase @@ -581,45 +564,3 @@ Since this pattern involves a lot of boilerplate, Django provides the class Meta: app_label = 'other_app_label' ... - -The decorator can also be applied to classes:: - - from django.db import models - from django.test import SimpleTestCase - from django.test.utils import isolate_apps - - @isolate_apps('app_label') - class TestModelDefinition(SimpleTestCase): - def test_model_definition(self): - class TestModel(models.Model): - pass - ... - -The temporary ``Apps`` instance used to isolate model registration can be -retrieved as an attribute when used as a class decorator by using the -``attr_name`` parameter:: - - from django.db import models - from django.test import SimpleTestCase - from django.test.utils import isolate_apps - - @isolate_apps('app_label', attr_name='apps') - class TestModelDefinition(SimpleTestCase): - def test_model_definition(self): - class TestModel(models.Model): - pass - self.assertIs(self.apps.get_model('app_label', 'TestModel'), TestModel) - -Or as an argument on the test method when used as a method decorator by using -the ``kwarg_name`` parameter:: - - from django.db import models - from django.test import SimpleTestCase - from django.test.utils import isolate_apps - - class TestModelDefinition(SimpleTestCase): - @isolate_apps('app_label', kwarg_name='apps') - def test_model_definition(self, apps): - class TestModel(models.Model): - pass - self.assertIs(apps.get_model('app_label', 'TestModel'), TestModel) |
