我的问题:我正在编写测试,得到的响应是302,而不是200。我认为这是一种预期,因为当用户未登录并且未分配给Employee_Management组时,他们将总是被重定向。
因此,我试图创建一个用户并将其添加到该组中,但是我不知道如何检查该用户是否实际登录,或者该用户是否属于该组。我没有从setUp得到任何错误,但是测试仍然失败,并给我302。所以我的猜测是我搞砸了我的setUp。想法?
视图:
@method_decorator(group_required('Employee_Management'), name='dispatch')
class ListActiveView(TemplateView):
def get(self, request):
users = User.objects.all().exclude(is_superuser=True)
return render(request, 'user/list_active.html', {
'users': users,
})
网址:
app_name = 'user'
urlpatterns = [path('list_active/', ListActiveView.as_view(), name='list_active')]
测试:
class TestListActive(TestCase):
def setUp(self):
user = User.objects.create(username='testuser', password='testuserpass')
emp_man = Group.objects.create(name='Employee_Management')
user.groups.add(emp_man)
c = Client()
c.login(username='testuser', password='testuserpass')
def test_list_active_url(self):
response = self.client.get(reverse('user:list_active'))
self.assertEquals(response.status_code, 200)
答案 0 :(得分:2)
您的问题是您使用了两个Client
实例。
第一个(c
)是您在setUp
中创建的用户,您的用户已登录,但再也没有使用。
另一个是TestCase
中使用的self.client
实例的客户端(test_list_active_url
),您的用户尚未登录。
要解决此问题,请始终使用TestCase
实例的客户端:
class TestListActive(TestCase):
def setUp(self):
user = User.objects.create(username='testuser', password='testuserpass')
emp_man = Group.objects.create(name='Employee_Management')
user.groups.add(emp_man)
self.client.login(username='testuser', password='testuserpass')
def test_list_active_url(self):
response = self.client.get(reverse('user:list_active'))
self.assertEquals(response.status_code, 200)