Тест не удаляет сгенерированные файлы при использовании 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