DJANGO ТЕСТИРОВАНИЕ ПАДЖИНАТОРА

При разработке приложений на Django часто используются паджинаторы для разбиения длинных списков на страницы. Однако, как и любой другой компонент приложения, паджинатор также требует тестирования для убеждения в его правильной работе.

Для написания тестов паджинатора в Django используется встроенный модуль тестирования - unittest. Пример кода для тестирования паджинатора, который проверяет количество элементов на странице и корректность номеров страниц:

class PaginatorTest(TestCase):
def test_paginator(self):
data = list(range(0, 20))
p = Paginator(data, 5)
self.assertEqual(p.num_pages, 4)
self.assertEqual(list(p.page(2)), [5, 6, 7, 8, 9])

В данном тестовом случае мы создаем список из 20 элементов и разбиваем его на страницы по 5 элементов. Затем мы проверяем, что паджинатор создал 4 страницы и что вторая страница содержит элементы с 6 по 10.

Также важно тестировать паджинатор в условиях, когда количество элементов недостаточно для создания нескольких страниц или когда количество элементов не кратно количеству элементов на странице. Для этого можно использовать следующий код:

class PaginatorTest(TestCase):
def test_single_page(self):
data = list(range(0, 5))
p = Paginator(data, 5)
self.assertEqual(p.num_pages, 1)
self.assertEqual(list(p.page(1)), [0, 1, 2, 3, 4])

def test_incorrect_page(self):
data = list(range(0, 20))
p = Paginator(data, 5)
with self.assertRaises(PageNotAnInteger):
p.page('a')

with self.assertRaises(EmptyPage):
p.page(0)

В этом примере мы тестируем случай, когда всего одна страница, и случай, когда запрашивается страница, которой не существует или номер страницы меньше единицы.

Тестирование Django приложения [GeekBrains]

Django 4 E-Commerce Полный курс #python #django4 #djangoecomerce

#15. Добавляем пагинацию (pagination) - Уроки по Django REST Framework

#18. Постраничная навигация (пагинация) - Django уроки

Устраиваемся на работу - Выполняем тестовое задание на Junior Python разработчика - Парсинг

Тестирование представлений Django

BLGPG-7946FC44373F-24-11-27-16

Новые материалы: