Чтобы создать временный файл с пользовательским содержимым для ваших тестов, вы можете использовать этот класс:
import os, tempfile
class TestFileContent:
def __init__(self, content):
self.file = tempfile.NamedTemporaryFile(mode='w', delete=False)
with self.file as f:
f.write(content)
@property
def filename(self):
return self.file.name
def __enter__(self):
return self
def __exit__(self, type, value, traceback):
os.unlink(self.filename)
Этот класс создаст временный файл, запишет содержимое в него, а затем закроет файл.
Вы используете его внутри оператора with
, чтобы гарантировать, что файл будет удален после использования следующим образом:
with TestFileContent(
'''Hello, world
'''
) as test_file:
# Here, a temporary file has been created in the file named test_file.filename with the specified content
# This file will be deleted once you leave the with block