РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
774 of 818 menu

Метод setUp

Метод setUp применяется в классах, наследуемых от TestCase, и выполняется автоматически перед каждым тестовым методом. Он предназначен для создания начальных данных, инициализации объектов и настройки состояния, необходимого для выполнения тестов. Метод не принимает аргументов и не возвращает значения.

Синтаксис

from django.test import TestCase from myapp.models import Article class ArticleTestCase(TestCase): def setUp(self): # Создание тестовых данных Article.objects.create(title="article 1", status="published") Article.objects.create(title="article 2", status="draft")

Пример

Давайте создадим тестовый набор для проверки методов модели Article. В методе setUp мы создадим несколько записей, которые будут использоваться в каждом тесте:

from django.test import TestCase from myapp.models import Article from datetime import date class ArticleModelTest(TestCase): def setUp(self): # Создаем тестовые статьи self.article1 = Article.objects.create( title="article 1", status="published", created_at=date(2025, 1, 10) ) self.article2 = Article.objects.create( title="article 2", status="draft", created_at=date(2025, 1, 15) ) self.article3 = Article.objects.create( title="article 3", status="published", created_at=date(2025, 1, 20) ) def test_published_articles_count(self): # Проверяем количество опубликованных статей published_count = Article.objects.filter(status="published").count() self.assertEqual(published_count, 2) def test_article_creation_date(self): # Проверяем дату создания статьи self.assertEqual(self.article1.created_at, date(2025, 1, 10))

Результат выполнения тестов:

"Running 2 tests in ArticleModelTest" "test_published_articles_count - OK" "test_article_creation_date - OK"

Пример

Рассмотрим пример использования setUp для подготовки данных с использованием связанных моделей. Создадим категорию и несколько статей, чтобы проверить методы работы с внешними ключами:

from django.test import TestCase from myapp.models import Article, Category class ArticleCategoryTest(TestCase): def setUp(self): # Создаем категорию self.category = Category.objects.create( name="Technology", description="Articles about technology" ) # Создаем статьи для категории self.article1 = Article.objects.create( title="article 1", status="published", category=self.category ) self.article2 = Article.objects.create( title="article 2", status="published", category=self.category ) def test_category_articles(self): # Проверяем связь категории со статьями articles = self.category.article_set.all() self.assertEqual(articles.count(), 2) self.assertEqual(articles[0].title, "article 1") def test_article_category(self): # Проверяем связь статьи с категорией self.assertEqual(self.article1.category.name, "Technology")

Результат выполнения тестов:

"Running 2 tests in ArticleCategoryTest" "test_category_articles - OK" "test_article_category - OK"

Пример

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

from django.test import TestCase from myapp.models import Article class ArticleBulkTest(TestCase): def setUp(self): # Создаем множество тестовых статей с разными статусами self.test_articles = [] for i in range(1, 6): status = "published" if i % 2 == 0 else "draft" article = Article.objects.create( title=f"article {i}", status=status, views=i * 10 ) self.test_articles.append(article) def test_published_articles(self): # Проверяем, что количество опубликованных статей верное published = Article.objects.filter(status="published") self.assertEqual(published.count(), 2) def test_total_views(self): # Проверяем общее количество просмотров total_views = sum(article.views for article in self.test_articles) self.assertEqual(total_views, 150) # 10 + 20 + 30 + 40 + 50

Результат выполнения тестов:

"Running 2 tests in ArticleBulkTest" "test_published_articles - OK" "test_total_views - OK"

Смотрите также

  • метод setUpTestData,
    который создает данные один раз для всего класса тестов
  • атрибут client,
    который предоставляет клиент для имитации запросов
  • метод assertContains,
    который проверяет наличие содержимого в ответе
  • метод assertRedirects,
    который проверяет перенаправление в ответе
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить