[英]How to write unit test for admin save function
我已经自定义save_model
管理员,即
class MyModelAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
# some more question code here
obj.save()
现在,我想测试 MyModelAdmin save_model
功能。 我尝试发布如下:
class MyModelAdminSaveTestCase(TestCase):
def setUp(self):
# setup code here
def test_save_model(self):
'''Test add employee
'''
my_obj = {
'name': 'Tester',
'address': '12 test Test',
'city': 'New York',
'state': 'NY',
}
self.client.login(username=self.user, password=self.pwd)
response = self.client.post(reverse('admin:mymodel_mymodel_add'), my_obj, follow=True)
self.assertEqual(response.status_code, 200)
self.assertEqual(MyModel.objects.count(), 1)
但是,测试失败:
self.assertEqual(MyModel.objects.count(), 1)
AssertionError: 0 != 1
我的回答晚了 5 年,但也许它对其他人有帮助。
要访问 django 管理员用户需要有is_staff=True
。 非员工用户被重定向到登录页面(这可能是上面示例中发生的情况)。
此外,用户需要有足够的权限才能访问特定的管理页面(如果您不需要测试权限,则简单的解决方法是设置is_superuser=True
)。
所以像这样的客户端设置可能会解决这个问题:
user = User.objects.create_superuser(username='super',
email='super@email.org',
password='pass')
client.login(username=user.username, password='pass')
# now you can access django admin
如果出现问题,您可以检查response.context_data
以获取更多信息。
但在我看来,还有一种更简洁的方法来测试save_model
,请参阅这个答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.