Używam obiektu io.StringIO
do wyśmiewania pliku w teście jednostek dla klasy. Problem polega na tym, że ta klasa wydaje się spodziewać wszystkie ciągi być Unicode domyślnie, ale wbudowane str
nie zwraca unicode ciągi:Problemy z kodowaniem Unicode w przypadku użycia parametru io.StringIO do fałszywego pliku
>>> buffer = io.StringIO()
>>> buffer.write(str((1, 2)))
TypeError: can't write str to text stream
Ale
>>> buffer.write(str((1, 2)) + u"")
6
prace. Zakładam, że dzieje się tak dlatego, że konkatenacja z łańcuchem unicode sprawia, że wynik również unicode. Czy istnieje bardziej eleganckie rozwiązanie tego problemu?