Как проверить админ смена просмотров? - PullRequest
0 голосов
/ 20 февраля 2020

Я получил довольно сложное представление о смене администратора для моей Django модели.

Существует множество ресурсов о том, как тестировать представления списка администратора (например, здесь ), но не для представления изменений.

Как создать тест дела за это?

Ответы [ 2 ]

1 голос
/ 20 февраля 2020

Вот версия, более гибкая для других моделей, основанная на ответе Эрика.

from django.contrib.auth.models import User, Group
from django.test import TestCase, Client
from django.urls import reverse


def get_admin_change_view_url(obj: object) -> str:
    return reverse(
        'admin:{}_{}_change'.format(
            obj._meta.app_label,
            type(obj).__name__.lower()
        ),
        args=(obj.pk,)
    )


class BaseAdminTestCaseMixin:
    def setUp(self):
        self.client = Client()
        User.objects.create_superuser(
            username='superuser', password='secret', email='admin@example.com'
        )
        c.force_login(username='superuser', password='secret')

    def get_instance(self):
        raises NotImplementedError()
        instance, _ = Group.objects.get_or_create(name='Test Group')
        return instance

    def test_change_view_loads_normally(self):
        instance = self.get_instance()
        response = c.get(get_admin_change_view_url(instance))
        self.assertEqual(response.status_code, 200)


class TestGroupAdmin(BaseAdminTestCaseMixin, TestCase):
    def get_instance(self):
        instance, _ = Group.objects.get_or_create(name='Test Group')
        return instance
0 голосов
/ 20 февраля 2020

Вы можете проверить представление смены администратора любой модели с помощью Django test client .

Для этого вам понадобится указанный URL-адрес c для вашей модели, который можно сгенерировать, как описано в документах .

. Вот пример того, как запустите простой тест «нормально загружается» для модели группы:

from django.contrib.auth.models import User, Group
from django.test import TestCase, Client
from django.urls import reverse


def get_admin_change_view_url(obj: object) -> str:
    return reverse(
        'admin:{}_{}_change'.format(
            obj._meta.app_label,
            type(obj).__name__.lower()
        ),
        args=(obj.pk,)
    )


class TestGroupAdmin(TestCase):

    def test_change_view_loads_normally(self):
        # prepare client
        User.objects.create_superuser(
            username='superuser', password='secret', email='admin@example.com'
        )
        c = Client()
        c.login(username='superuser', password='secret')                

        # create test data
        my_group = Group.objects.create(name='Test Group')

        # run test
        response = c.get(get_admin_change_view_url(my_group))
        self.assertEqual(response.status_code, 200)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...