Search code examples
pythondjangotestcasedjango-testing

Django unit test. Simple example


I learn unit test with Django. How to write test for this function? I need this example to understand.

@login_required
def datas(request):
    queryset = Data.objects.filter(user=request.user)
    if queryset.count() == 0:
        return redirect('/data/')
    return render_to_response('data_list.html',
                              {'data': queryset},
                              context_instance=RequestContext(request))

Solution

  • #imports here
    
    class YourTestCase(TestCase):
        fixtures = ['user-data.json']
    
        def setUp(self):
            self.client = Client()
    
        def test_empty_datas(self):
            self.client.login(username='something', password='something')
            response = self.client.get('/path/to/view/')  # or reverse by name
            self.assertEqual(response.status_code, 302,
                'View did not redirect on empty queryset.')
    
        def test_populated_datas(self):
            self.client.login(username='something', password='something')
            Data.objects.create(some_field=some_value)
            response = self.client.get('/path/to/view/')  # or reverse by name
            self.assertEqual(response.status_code, 200,
                'View did not return a 200.')
    

    ...and so on. user-data would need to contain at least one user, otherwise you won't be able to authenticate.