2

views.py 内に django logout 関数を取得しました:

def logout_view(request):

    logout(request) 
    return HttpResponseRedirect(reverse('cost_control_app:login'))

そして、このコードでカバレッジを使用してテストしようとしています:

class TestLogout(TestCase):

   def test_logout(self):
        self.client = Client()
        response = self.client.get('/logout/')

しかし、それは機能していません。私のトレースバックは none を返します:

> /home/juanda/cost_control_repository/cost_control/cost_control_app/unitary_test/test_views_authentication.py(73)TestLogout()
-> def test_logout(self):
(Pdb) n
--Return--
> /home/juanda/cost_control_repository/cost_control/cost_control_app/unitary_test/test_views_authentication.py(73)TestLogout()->None
-> def test_logout(self):

これはログアウトの URL です。

url(r'^logout/$', views_authentication.logout_view, name = "logout"),

関数はまったく呼び出されていないと思いますが、他に何をすべきかわかりません...何か助けてください??

前もって感謝します

4

1 に答える 1

3

まず、URL に問題があるようです。そうあるべきだと思う

class TestLogout(TestCase):

   def test_logout(self):
        self.client = Client()
        response = self.client.get('/cost_control/logout/')

また、最初にユーザーをログインすることをお勧めします。そう、

class TestLogout(TestCase):

   def test_logout(self):
        self.client = Client()
        # Assuming there is a user exists in tests db
        # or make a user like.
        # User.objects.create_user(username='fred', email='test@test.com', password='secret') 
        self.client.login(username='fred', password='secret')
        response = self.client.get('/cost_control/logout/')
        self.assertEqual(response.status_code, 302)

coverage run --source=.,cv_manage manage.py test where --source = [all apps] これは .coveragerc でも設定できます。

于 2016-02-15T16:38:03.373 に答える