Использование классов в тестировании Python/Django для повышения многоразовости кода
Мне нужна помощь с моей архитектурой тестирования. Мой код работает, но он кажется мне уродливым. Не могли бы вы взглянуть :
Цель состоит в том, чтобы сделать одинаковые тесты для всех моих страниц в Django :
Я написал блок testing.py
from django.urls import reverse, resolve
class SinglePageTest(object):
str_reverse = ''
adresse = ''
template = None
template_path = ''
str_contain = ''
def initialize(self):
self.url = reverse(self.str_reverse)
self.view = resolve(self.adresse)
self.response = self.client.get(self.url)
def test_status_200(self):
self.assertEqual(self.response.status_code, 200)
def test_templates_home(self):
self.assertTemplateUsed(self.response, self.template_path)
def test_contains_HTML(self):
self.assertContains(self.response,
self.str_contain)
def test_url_resolve(self):
self.assertEqual(self.view.func.__name__,
self.template.as_view().__name__)
Когда мне нужно протестировать страницу в test.py я делаю следующее :
from django.test import TestCase, SimpleTestCase
from DjangoTools.testing import SinglePageTest
class RetrievePassword(SimpleTestCase, SinglePageTest):
def setUp(self):
self.str_reverse = 'retrieve-password'
self.adresse = '/accounts/retrieve-password'
self.template = RetrievePasswordView
self.template_path = 'accounts/retrieve-password.html'
self.str_contain = '<h1>🔑 Récupérer le <span class="clr-org">mot de passe</span></h1>'
super(RetrievePassword, self).setUp()
SinglePageTest.initialize(self)
Проблема в том, что PyCharm не находит ссылки на многие методы в testing.py, и это нормально, потому что я использую базовый объект, который не содержит этих методов.
Мои вопросы следующие :
- Is-it well to do like this ?
- Can I say that I'm using Mixins ?
- How to tell pycharm to find assertTemplateUsed, client.get etc...
Желаю хорошего дня,