Hi,<br><br>I have been working on converting some of the older test files to use unittest.&nbsp; test_expat.py has a section like:<br><br>class Outputter:<br>&nbsp;&nbsp;&nbsp; def StartElementHandler(self, name, attrs):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &#39;Start element:\n\t&#39;, repr(name), sortdict(attrs)
<br><br>&nbsp;&nbsp;&nbsp; def EndElementHandler(self, name):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &#39;End element:\n\t&#39;, repr(name)<br><br>&nbsp;&nbsp;&nbsp; def CharacterDataHandler(self, data):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data = data.strip()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if data:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &#39;Character data:&#39;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &#39;\t&#39;, repr(data)<br><br>&nbsp;&nbsp;&nbsp; def ProcessingInstructionHandler(self, target, data):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &#39;PI:\n\t&#39;, repr(target), repr(data)<br><br>&nbsp;&nbsp;&nbsp; def StartNamespaceDeclHandler(self, prefix, uri):
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &#39;NS decl:\n\t&#39;, repr(prefix), repr(uri)<br>&nbsp;&nbsp;&nbsp; &lt;snip&gt;<br><br>...where it defines a set of handlers for an xml document that prints the output to stdout.&nbsp; The test then parses an xml document using this class and the stdout output is compared to a file.&nbsp; There are several lines of text on stdout to be compared:
<br><br>PI:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#39;xml-stylesheet&#39; &#39;href=&quot;stylesheet.css&quot;&#39;<br>Comment:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#39; comment data &#39;<br>Notation declared: (&#39;notation&#39;, None, &#39;notation.jpeg&#39;, None)<br>
Unparsed entity decl:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (&#39;unparsed_entity&#39;, None, &#39;entity.file&#39;, None, &#39;notation&#39;)<br>Start element:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#39;root&#39; {&#39;attr1&#39;: &#39;value1&#39;, &#39;attr2&#39;: &#39;value2\xe1\xbd\x80&#39;}
<br>NS decl:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#39;myns&#39; &#39;<a href="http://www.python.org/namespace">http://www.python.org/namespace</a>&#39;<br>Start element:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#39;<a href="http://www.python.org/namespace!subelement">http://www.python.org/namespace!subelement
</a>&#39; {}<br>Character data:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#39;Contents of subelements&#39;<br>End element:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#39;<a href="http://www.python.org/namespace!subelement">http://www.python.org/namespace!subelement</a>&#39;<br>End of NS decl:
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#39;myns&#39;<br>Start element:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#39;sub2&#39; {}<br>Start of CDATA section<br>Character data:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#39;contents of CDATA section&#39;<br>End of CDATA section<br>End element:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#39;sub2&#39;
<br>External entity ref: (None, &#39;entity.file&#39;, None)<br>End element:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#39;root&#39;<br><br><br>unittest does not seem well suited to this type of testing, because the stdout output comparison is testing many different pieces of functionality.&nbsp; Some subset of it is probably even important.&nbsp; To do this same testing with unittest would require many lines of 
self.assertEquals(expected_string, string_from_stdout).<br><br>Does anyone have ideas on how this can be tested in a manner that is not as brittle as the stdout tests, but doesn&#39;t require writing significantly more test code?&nbsp; Or if not, is converting this file to use unittest a bad idea?
<br><br>Jerry Seutter<br>