我肯定遗漏了一些明显的东西,但我看不到,所以也许你能帮上忙?
我正在使用Pytest测试一个Django表单和它的对象创建。我正在使用Django客户端对象,并尝试force_login,它根据结果是不工作的,因为在响应中,url包含重定向到登录页面,就好像用户不会登录一样……
为什么会发生这种情况,我做错了什么以及如何修复它?
代码如下:
from django.test import TestCase, RequestFactory, Client
class TestViews(TestCase):
@classmethod
def setUpClass(cls):
super(TestViews, cls).setUpClass()
cls.user = mixer.blend(get_user_model())
cls.patient = mixer.blend('patient.Patient', created_by=cls.user)
cls.factory = RequestFactory()
@pytest.mark.django_db
def test_patient_creation_form_valid(self):
c = Client()
c.force_login(self.user)
response = c.post(reverse('NewPatientForm'), {
'name': 'John',
'surname': 'Smith',
'phone': '601123456',
'email': 'john.smith@gmail.com',
})
self.assertEqual(response.status_code, 302)
np = c.get(response.url)谢谢!
发布于 2019-01-03 18:19:46
我在测试中遇到了类似的问题,即使我使用的是force_login,用户也会被重定向到登录页面。
实际上,该用户已登录,但缺少查看该页面所需的权限。
当我添加了所需的权限(如下所示)时,我能够成功地发布到页面,而不会被重定向。
perm = Permission.objects.get(codename='can_approve_requests')
user.user_permissions.add(perm)有关权限的更多信息,请单击此处Django Permissions and Authorization
我希望这能帮到你。
https://stackoverflow.com/questions/53184379
复制相似问题