Итак, в основном, тест работает, он говорит «ОК», когда я кладу в консоль
python3 manage.py test apps/diary
, но дело в том, что когда я проверяю другие источники, особенно WS Vincent (https://wsvincent.com/))способ делать тесты, он более чистый, он не должен беспокоиться о том, аутентифицирована ли сессия, создающая объект, или нет, или я так думаю.
Так что в моем коде все это просто какой-товременные испытания того, что должно быть хорошо написанным тестом, просто потому, что я не могу придумать другой способ сделать это. Я читал эту статью «лучшие практики» в тестировании, как в https://realpython.com/testing-in-django-part-1-best-practices-and-examples/,, но он все еще нене считаю его полезным.
Вот фрагмент моего кода, класс Test: class DetailViewTest (TestCase):
def setUp(self):
self.user = get_user_model().objects.create_user(
username='testuser', email='test@email.com',
password='secretpw', first_name='John',
last_name='Doe'
)
self.client.force_login(self.user)
self.client.post(reverse('diary:add'), {
'title': 'Test Title',
'author': self.user,
'content': 'Loren ipsum'
})
self.client.logout()
self.user2 = get_user_model().objects.create_user(
username='testuser2', email='test2@email.com',
password='secretpw', first_name='John',
last_name='Doe'
)
self.client.force_login(self.user2)
self.client.post(reverse('diary:add'), {
'title': 'Test Title',
'author': self.user,
'content': 'Loren ipsum'
})
self.client.logout()
def test_view_url_exists_at_proper_location(self):
self.client.force_login(self.user)
response = self.client.get('/post/1/')
self.assertEqual(response.status_code, 200)
def test_view_uses_correct_template(self):
self.client.force_login(self.user)
response = self.client.get('/post/1/')
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, 'diary/post_detail.html')
def test_cannot_view_others_post(self):
self.client.force_login(self.user2)
response = self.client.get('/post/1/')
self.assertEqual(response.status_code, 404)
(в любом случае вот полный код: https://pastebin.com/6ufabmJP)
Кроме того, мне было интересно, можно ли наследовать классы Test другим, или мне всегда нужно входить в систему, прежде чем создавать объект db, и нужно ли мне всегда создавать пользователя, прежде чем я смогу войти в систему.
помощь и советы будут абссовершенно признателенспасибо ~