Am einfachsten ist es, die Ausgabedatei zu schreiben, dann ihren Inhalt zu lesen, den Inhalt der (erwarteten) Golddatei zu lesen und sie mit der einfachen Zeichenfolgengleichheit zu vergleichen. Wenn sie identisch sind, löschen Sie die Ausgabedatei. Wenn sie unterschiedlich sind, erheben Sie eine Behauptung.
Auf diese Weise wird nach Abschluss der Tests jeder fehlgeschlagene Test mit einer Ausgabedatei dargestellt, und Sie können ein Drittanbieter-Tool verwenden, um sie von den Golddateien zu unterscheiden (Beyond Compare ist hierfür hervorragend geeignet).
Wenn Sie wirklich Ihre eigene Diff-Ausgabe bereitstellen möchten, denken Sie daran, dass die Python-Standardlib das Difflib-Modul enthält. Die neue unittest-Unterstützung in Python 3.1 enthält eine assertMultiLineEqual
Methode, mit der Unterschiede angezeigt werden, ähnlich wie folgt:
def assertMultiLineEqual(self, first, second, msg=None):
"""Assert that two multi-line strings are equal.
If they aren't, show a nice diff.
"""
self.assertTrue(isinstance(first, str),
'First argument is not a string')
self.assertTrue(isinstance(second, str),
'Second argument is not a string')
if first != second:
message = ''.join(difflib.ndiff(first.splitlines(True),
second.splitlines(True)))
if msg:
message += " : " + msg
self.fail("Multi-line strings are unequal:\n" + message)