发布于 2020-02-20 15:02:02
您可以使用Django的测试客户端测试任何模型的管理更改视图。
为此,您将需要模型的特定视图URL,可以按照文档中的描述生成该视图URL。
下面是一个示例,说明如何为Group模型运行一个简单的“正常加载”测试:
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)发布于 2020-02-20 15:31:37
这是一个更灵活的版本,以埃里克的答案为基础的其他模型。
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 = User.objects.create_superuser(
username='superuser', password='secret', email='admin@example.com'
)
self.c.force_login(user)
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 = self.client.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 instancehttps://stackoverflow.com/questions/60322847
复制相似问题