Как использовать внешние файлы для тестов Django
Мне нужно протестировать валидацию модели для проверки SVG файлов.
Поэтому я хочу получить доступ к моим тестовым файлам, но столкнулся с ошибкой SuspiciousFileOperation
. Я пытался получить файлы из каталога app, сохранить файлы в папке static и использовать функцию django.contrib.staticfiles.finders.find
для их получения, но проблема появляется снова и снова.
Проблема заключалась в использовании абсолютного пути к файлам, что Django не разрешает и считает подобные действия подозрительными. Решением этой проблемы является использование относительного пути, который задает STATIC_URL
в settings.py
. В моем случае я изменил DIR_PATH
на static/tests/LinkSVG
и далее просто получаю доступ к своим файлам без использования дополнительных функций.
Результат:
class LinkSVGTestCase(TestCase):
DIR_PATH = "static/tests/LinkSVG/"
def test_svg_file(self) -> None:
with open(path.join(self.DIR_PATH, "triangle.svg"), "rb") as file:
link = Link.objects.create(
name="Triangle",
url="https://example.com/",
icon=File(file, name=file.name)
)
link.full_clean()