• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Testy jednostkowe widoków - problem ze zrozumieniem

Object Storage Arubacloud
0 głosów
255 wizyt
pytanie zadane 12 listopada 2018 w Python przez Eliro Stary wyjadacz (12,160 p.)

Uczę się nadal pisać testy jednostkowe w Pythonie Django. Usiłuję napisać test dla widoków mojej aplikacji na przykładzie tego kodu

from django.test import TestCase
from django.urls import reverse

from catalog.models import Author

class AuthorListViewTest(TestCase):
    @classmethod
    def setUpTestData(cls):
        # Create 13 authors for pagination tests
        number_of_authors = 13

        for author_id in range(number_of_authors):
            Author.objects.create(
                first_name=f'Christian {author_id}',
                last_name=f'Surname {author_id}',
            )
           
    def test_view_url_exists_at_desired_location(self):
        response = self.client.get('/catalog/authors/')
        self.assertEqual(response.status_code, 200)
           
    def test_view_url_accessible_by_name(self):
        response = self.client.get(reverse('authors'))
        self.assertEqual(response.status_code, 200)
        
    def test_view_uses_correct_template(self):
        response = self.client.get(reverse('authors'))
        self.assertEqual(response.status_code, 200)
        self.assertTemplateUsed(response, 'catalog/author_list.html')
        
    def test_pagination_is_ten(self):
        response = self.client.get(reverse('authors'))
        self.assertEqual(response.status_code, 200)
        self.assertTrue('is_paginated' in response.context)
        self.assertTrue(response.context['is_paginated'] == True)
        self.assertTrue(len(response.context['author_list']) == 10)

    def test_lists_all_authors(self):
        # Get second page and confirm it has (exactly) remaining 3 items
        response = self.client.get(reverse('authors')+'?page=2')
        self.assertEqual(response.status_code, 200)
        self.assertTrue('is_paginated' in response.context)
        self.assertTrue(response.context['is_paginated'] == True)
        self.assertTrue(len(response.context['author_list']) == 3)

Jednak nie bardzo rozumiem pewnych rzeczy. Mianowicie co te testy sprawdzają, oraz

  • Co to jest self.client.get?
  • Co oznacza f' (f prim) w linijce first_name=f'Christian {author_id}',
  • Do czego służy response.status_code?
  • Co robi reverse?
  • Czym jest pagination?

Testy próbuje napisać do: https://github.com/Incybro/Forum/tree/master/Homepage

1 odpowiedź

+1 głos
odpowiedź 12 listopada 2018 przez izonik Stary wyjadacz (12,560 p.)
wybrane 17 listopada 2018 przez Eliro
 
Najlepsza

Mianowicie co te testy sprawdzają

Nazwy same na to wskazują. Wskaż którego testu nie rozumiesz. 

  • Co to jest self.client.get 

Po prostu wywołanie żądania typu GET, poczytaj koniecznie coś o POST i GET.

  • Co oznacza f' (f prim) w linijce first_name=f'Christian {author_id}',

To taki "lukier składniowy" np.  f"variable value: {variable}, 2 + 2 {2 + 2}" ` jest to tożsame z `"variable value: {}, 2 + 2 {}".format(variable, 2+2)` tu jest więcej o tym.

Do czego służy response.status_code

Zmienna `status_code` zawiera status odpowiedzi, spójrz tu. (masz tam też trochę o POST i GET, więc poczytaj).

Co robi reverse

Uczymy się używać dokumentcji.

  • Czym jest pagination?

Po prostu jest to podział na strony, czyli zamiast ładować 1000 postów na stronę ładujemy 20, a reszta jest dostępna na kolejnych stronach. Występuje np tu. Więcej o tym oczywiście w Dokumentacji.

komentarz 12 listopada 2018 przez Eliro Stary wyjadacz (12,160 p.)
No to w takiej sytuacji jedyną niewiadomą jest dla mnie def test_lists_all_authors(self). Nie wiem do czego to służy.
komentarz 12 listopada 2018 przez izonik Stary wyjadacz (12,560 p.)

Więc tak, masz stworzonych 13 autorów i ten test sprawdza czy na drugiej stronie, są wymienieni tylko trzej autorzy, a powinno być ich tylko trzech, bo na stronę może przypadać maks 10 autorów.

 

Podobne pytania

0 głosów
2 odpowiedzi 3,115 wizyt
pytanie zadane 28 października 2018 w Python przez Eliro Stary wyjadacz (12,160 p.)
0 głosów
0 odpowiedzi 229 wizyt
+1 głos
2 odpowiedzi 324 wizyt
pytanie zadane 7 listopada 2019 w Python przez Kamil Początkujący (430 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...