Django - Установите settings.DEBUG в True для тестирования Swagger endpint
У меня есть этот тест для проверки того, могу ли я пинговать конечную точку swagger
from django.test import SimpleTestCase
from django.test.utils import override_settings
from django.urls import reverse
from rest_framework import status
class SwaggerTest(SimpleTestCase):
@override_settings(DEBUG=True)
def test_successful_swagger_ping(self):
"""
Test to ensure that Swagger can be reached successfully. If this test
throws 5XX that means there's an error in swagger annotation on some view function.
"""
response = self.client.get(reverse('swagger'))
self.assertEqual(response.status_code, status.HTTP_200_OK)
Так что этот тест не работает, потому что у меня swagger добавляется в url только при settings.DEBUG=True
. Я думал, что @override_settings(DEBUG=TRUE)
исправит это, но это не так. Мой тест проходит, когда я вручную устанавливаю settings.DEBUG=True
в файле settings.py
, иначе он выдает ошибку, потому что не может найти конечную точку. Я пробовал украсить и класс, и функцию с помощью @override_settings
, и в обоих случаях он выдавал ошибку, потому что не мог найти конечную точку. Я не особенно привязан к такому способу проверки работоспособности Swagger. Этот тест нужен только для того, чтобы проверить, не возвращает ли Swagger ошибку относительно аннотации. Если кто-то знает лучший способ тестирования, я буду рад ответить.
Вот как я обычно переопределяю настройки в тестах:
from django.conf import settings
from django.test import TestCase
class MyTestCase(TestCase): # noqa
@staticmethod
def setUpClass():
settings.DEBUG = True
super(MyTestCase, MyTestCase).setUpClass()