Поэтому я решил определить тесты в базовом классе и создать подклассы, которые регистрируют пользователя во время setUp() было бы правильным решением.
Однако я не могу найти элегантного решения, позволяющего исключить запуск тестов в базовом классе.
Код: Выделить всё
from django.contrib.auth.models import User
from django.test import TestCase
class A(TestCase):
@classmethod
def setUpTestData(cls):
cls.user_a = User.objects.create_user("a", "", "a")
cls.user_b = User.objects.create_user("b", "", "b")
def setUp(self):
# global set up stuff here
...
def test_1(self):
self.assertEqual(self.user_a.username, "a")
class SubA(A):
def setUp(self):
super().setUp()
self.client.force_login(self.user_a)
class SubB(A):
def setUp(self):
super().setUp()
self.client.force_login(self.user_b)
Я пробовал:
- извлечь базовый класс в другой модуль, который не включен в поиск по умолчанию. шаблон.
=> по-прежнему запускает тесты, поскольку базовый класс должен быть импортирован для наследования от него - определение функции load_tests(...) в пакете который исключает базовый класс
=> тот же результат, что и выше - вызов unittest.SkipTest в базовом классе setUp() и перехват его в setUp подклассов
=> работает, но добавляет все тесты в базовом классе как «пропущенные»
Есть ли способ исключить запуск тестов в базовом классе (который должен наследовать от Django TestCase) без записи их как пропущенных и, желательно, без необходимости использования дополнительных параметров в моем ./ команда Manage.py test?
Подробнее здесь: https://stackoverflow.com/questions/785 ... d-directly