Использование классов в тестировании 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, и это нормально, потому что я использую базовый объект, который не содержит этих методов.

Мои вопросы следующие :

  1. Is-it well to do like this ?
  2. Can I say that I'm using Mixins ?
  3. How to tell pycharm to find assertTemplateUsed, client.get etc...

Желаю хорошего дня,

Вернуться на верх