Тест не удаляет сгенерированные файлы при использовании factory_boy в django

Я использую factory_boy для генерации произвольных данных для запуска тестов. но после каждого теста он не удаляет файлы автоматически. Есть ли что-нибудь, что я должен добавить?

Любые предложения будут высоко оценены

Модель для теста

class TrackFactory(factory.django.DjangoModelFactory):
    class Meta:
        model = "tracks.Track"

    id = factory.Faker("uuid4")
    filename = "Track 01 - track"
    created_by = factory.SubFactory(UserFactory)
    file = factory.django.FileField(filename="test.mp3")
    track_length = 145

    @classmethod
    def _create(cls, model_class, *args, **kwargs):
        instance = cls.build(*args, **kwargs)
        instance.save()
        return instance

Тест



class TestViewDeleteTrack(AuthorizedApiTestCase):
    def setUp(self):
        self.url = reverse(list-track)
        self.user_data = UserFactory()
        self.data = TrackFactory(created_by=self.user_data)
        self.client.force_authenticate(user=self.user_data)

    def test_list_tracks(self):
        self.get_and_assert_equal_status_code(status.HTTP_200_OK)

    def test_delete_track_valid_pk(self):
        self.delete_and_assert_equal_status_code(
            "delete-track",
            self.data.pk,
            status.HTTP_204_NO_CONTENT,
        )

собственные методы тестирования, используемые выше

def get_and_assert_equal_status_code(self, status_code):
        response = self.client.get(self.url)
        self.assertEqual(response.status_code, status_code)
        return response

def delete_and_assert_equal_status_code(self, url_name, pk, status_code):
        url = reverse(url_name, kwargs={"pk": pk})
        response = self.client.delete(url)
        self.assertEqual(response.status_code, status_code)

Файлы не удаляются, только поле базы данных, которое указывает на файл, вы можете удалить их в вашем методе разрушения.

import shutil


class MyTest(AuthorizedApiTestCase):
   ...

   def tearDown(self):
        # modify to actually delete what you want to delete.
        shutil.rmtree(settings.UPLOAD_FOLDER)

существует также tearDownClass, который является обратным по отношению к setUpClass

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