Для доставания созданного поста в тесте формы Django существует несколько надежных способов. Начнем с того, что вам нужно создать тестовые данные, что приведет к созданию нового поста.
Один из способов сделать это — использовать django.test.TestCase
и его методы, такие как setUp()
и tearDown()
. Метод setUp()
выполняется перед каждым тестом, и в нем вы можете создать тестовые данные, включая посты. Метод tearDown()
вызывается после каждого теста и позволяет вам очистить данные с целью сохранения чистоты теста. Пример:
from django.test import TestCase from myapp.models import Post class PostTestCase(TestCase): def setUp(self): self.post = Post.objects.create(title="Test Title", content="Test Content") def tearDown(self): self.post.delete() def test_post_creation(self): # проверка, что пост был создан self.assertEqual(Post.objects.count(), 1) # проверка, что значения атрибутов совпадают self.assertEqual(self.post.title, "Test Title") self.assertEqual(self.post.content, "Test Content")
Если у вас уже есть предварительно созданные и сохраненные посты, вы можете использовать класс django.test.Client
, чтобы сделать POST-запрос на создание нового поста в тесте. Пример:
from django.test import TestCase, Client from myapp.models import Post class PostTestCase(TestCase): def setUp(self): self.client = Client() def test_post_creation(self): response = self.client.post('/create-post/', { 'title': 'Test Title', 'content': 'Test Content', }) # проверка, что POST-запрос был успешен self.assertEqual(response.status_code, 200) # проверка, что пост был создан self.assertEqual(Post.objects.count(), 1) # получение созданного поста post = Post.objects.first() # проверка, что значения атрибутов совпадают self.assertEqual(post.title, 'Test Title') self.assertEqual(post.content, 'Test Content')
Оба этих способа могут быть использованы для доставания созданного поста в тесте формы Django. Вы можете выбрать тот, который лучше соответствует вашим потребностям и структуре вашего приложения.