diff --git a/Lib/test/test_xml_etree.py b/Lib/test/test_xml_etree.py
index d90f9780c52..da1ad096868 100644
--- a/Lib/test/test_xml_etree.py
+++ b/Lib/test/test_xml_etree.py
@@ -2286,6 +2286,15 @@ def test_write_to_user_binary_writer_with_bom(self):
'''\n'''
''''''.encode("utf-16"))
+ def test_tostringlist_invariant(self):
+ root = ET.fromstring('foo')
+ self.assertEqual(
+ ET.tostring(root, 'unicode'),
+ ''.join(ET.tostringlist(root, 'unicode')))
+ self.assertEqual(
+ ET.tostring(root, 'utf-16'),
+ b''.join(ET.tostringlist(root, 'utf-16')))
+
class ParseErrorTest(unittest.TestCase):
def test_subclass(self):
diff --git a/Lib/xml/etree/ElementTree.py b/Lib/xml/etree/ElementTree.py
index 10bf84992ed..3981659dd93 100644
--- a/Lib/xml/etree/ElementTree.py
+++ b/Lib/xml/etree/ElementTree.py
@@ -1190,9 +1190,15 @@ class DataStream(io.BufferedIOBase):
def writable(self):
return True
+ def seekable(self):
+ return True
+
def write(self, b):
data.append(b)
+ def tell(self):
+ return len(data)
+
ElementTree(element).write(DataStream(), encoding, method=method)
return data