Как вы можете видеть в setUpClass, мы определяем пользователя и профиль.
Когда вы смотрите на метод:
test_create_project
Все работает нормально и тест успешно пройден. Идея в том, что проект и позиция были созданы с помощью этого метода, я хотел бы использовать его из БД в методе:
test_homepage
Проблема в том, что когда вы пытаетесь прочитать их из БД, они больше не существуют. У меня вопрос почему. Я знаю, если я создам проект в
setUpClass
тогда это будет в БД. Моя цель не в том, чтобы создать дополнительный Проект и Позицию, если я могу создать его с помощью этого метода 1-го - протестировать его, а затем повторно использовать в следующем - но не с помощью (self), а путем чтения из БД.
Question1:
Is that possible?
Вопрос2:
Are methods in this class using separated DBes?
Question3:
What is the most efficient - and proper approach to this - my point is not to create extra records and reuse data as we go.
Они выходят пустыми в методе test_homepage:
print(project)
print(positions)
Django 2.2 Тесты:
from django.contrib.auth.models import User
from django.test import TestCase
from django.utils import timezone
from stb.core.models import Profile, Skill, Project, Position
class EntireAppTest(TestCase):
"""Updating Profile"""
@classmethod
def setUpClass(cls):
"""Creating User"""
super().setUpClass()
cls.user = User.objects.create_user(
username='johnconnor',
email='dude@nasa.gov',
password='terminator'
)
cls.profile = Profile.objects.get(user=cls.user)
skill = Skill()
skill.save()
skill.profile.add(cls.profile.id)
skill.title='python'
skill.save()
def setUp(self):
self.client.login(username='johnconnor', password='terminator')
def test_create_account(self):
self.user = User.objects.get(email='dude@nasa.gov')
self.assertEqual(User.objects.count(), 1)
self.assertEqual(self.user.username, 'johnconnor')
self.assertEqual(self.user.email, 'dude@nasa.gov')
def test_create_profile(self):
self.profile = Profile.objects.get(user=self.user)
now = timezone.now()
self.assertLess(self.profile.pub_date, now)
def test_create_project(self):
url = '/project/new/'
response = self.client.post(
url,
data={
'profile': self.profile,
'title': 'NASA JPL',
'position_formset-TOTAL_FORMS': 1,
'position_formset-INITIAL_FORMS': 0,
'position_formset-0-title': 'Python Developer',
'position_formset-0-description': 'description',
},
)
project = Project.objects.get(id=1)
position = Position.objects.get(project=project)
self.assertEqual(response.status_code, 302)
self.assertEqual(project.title, 'NASA JPL')
self.assertEqual(position.title, 'Python Developer')
def test_homepage(self):
url = '/'
response = self.client.get(
url,
data={},
)
positions = Position.objects.all()
project = Project.objects.all()
print(project)
print(positions)
# print(response.context)
self.assertEqual(response.status_code, 200)