Я написал миксин для тестового набора Django для тестирования сериализаторов.Сериализаторы, которые я хочу протестировать, используют этот миксин и работают как положено.Однако сам миксин имеет плохую привычку проверяться, не находясь в каталоге /tests
.Мне интересно, что может вызвать эту проблему и как я могу решить эту проблему.
У меня есть следующая структура:
| /project (urls, wsgi, etc)
| /shared
| /mixins
| testcase.py <- Handled as individual testcase (renaming does not work)
| It should NOT run the tests in this file when it is not
| NOT extended by a TestCase using the mixin.
| /tests
| test_xyz.py
| /users
| /tests
| /serializers
| test_serializer.py <- Extending the testcase mixin, only this file
| should run the test_ methods from the mixin.
| manage.py
Ожидается, что users.tests.serializers.test_serializer
TestCase, который расширяет shared.mixins.testcase.SerializerTestCaseMixn
запускает тесты из миксина.При запуске ./manage.py test users
отлично запускает тесты.
Проблема начинается при запуске ./manage.py test
без определенного приложения.Что происходит, так это то, что shared.mixins.testcase.SerializerTestCaseMixin
выполняется как отдельный TestCase.Хотя только имя метода содержит test_
в миксине, но не расширяет TestCase
и не находится в каталоге */tests/
.
Некоторые примеры кода текущей ситуации:
shared.mixins.testcase.SerializerTestCaseMixin
class SerializerTestCaseMixin:
x = None
def test_something(self):
self.assertNotNone(x)
users.tests.user.serializers.test_serializer.py
class UserSerializerTestCase(SerializerTestCaseMixin, TestCase):
x = 10
def test_xxx(self):
...
Таким образом, при запуске ./manage.py test users
тест в mixin проходит, так как x имеет значение 10 и не равно None.При запуске ./manage.py test
тесты в users app
проходят, но также неожиданно запускаются shared.mixins.testcase.SerializerTestCaseMixin.test_something
и не выполняются проверки, поскольку у него нет доступа к классу TestCase, поскольку он не расширяет TestCase
через SerializerTestCase.
Не могу понять, почему shared.mixins.testcase.SerializerTestCaseMixin
тестируется индивидуально при запуске всех тестов.Любые предложения, что вызывает это?