How can I create a fake file object in Python that contains text? I'm trying to write unit tests for a method that takes in a file object and retrieves the text via readlines()
then do some text manipulation. Please note I can't create an actual file on the file system. The solution has to be compatible with Python 2.7.3.
How to create fake text file in Python
Asked Answered
This is exactly what StringIO
/cStringIO
(renamed to io.StringIO
in Python 3) is for.
The solution has to be compatible with Python 2.7.3 –
Glide
@Glide The StringIO version is... or are you using a different 2.7.3 than the rest of the world? –
Kristinakristine
@Glide StringIO is compatible with 2.7.3 and above. –
Nicholenicholl
Or you could implement it yourself pretty easily especially since all you need is readlines()
:
class FileSpoof:
def __init__(self,my_text):
self.my_text = my_text
def readlines(self):
return self.my_text.splitlines()
then just call it like:
somefake = FileSpoof("This is a bunch\nOf Text!")
print somefake.readlines()
That said the other answer is probably more correct.
In Python3
import io
fake_file = io.StringIO("your text goes here") # takes string as arg
fake_file.read() # you can use fake_file object to do whatever you want
In Python2
import io
fake_file = io.StringIO(u"your text goes here") # takes unicode as argument
fake_file.read() # you can use fake_file object to do whatever you want
For more info check docs here
It's easy using faker-file (supported formats BIN
, CSV
, DOCX
, ICO
, JPEG
, PDF
, PNG
, PPTX
, SVG
, TXT
, WEBP
and ZIP
).
Installation
pip install faker-file[common]
Usage
from faker import Faker
from faker_file.providers.txt_file import TxtFileProvider
FAKER = Faker()
FAKER.add_provider(TxtFileProvider)
file = FAKER.txt_file()
Check the quick start and recipes for more.
© 2022 - 2024 — McMap. All rights reserved.