Vor kurzem stand ich vor einem Problem bei der Kombination von Unit-Tests und Doctests in Python. Ich arbeitete um dieses Problem auf andere Weise, aber ich habe immer noch Frage darüber.
Pythons doctest-Modul analysiert die docstrings in einem Modul und führt Befehle aus, die auf ">>> " am Anfang jeder Zeile folgen, und vergleicht die Ausgaben mit denen in docstrings.
Ich frage mich, ob ich die diese Vergleichsmethode durch das Modul doctest implementiert, wenn ich will. Ich weiß, dass es möglich ist, doctest zur Testsuite als Testfall hinzuzufügen, aber hier möchte ich es innerhalb eines einzelnen Testfalls tun.
Sie lautet in etwa so:
class MyTest(TestCase):
def testIt(self):
# some codes like self.assertEqual(...)
output = StringIO()
with StdoutCollector(output):
# do something that uses stdout
# I want something like this:
doctest.compare_result(output.getvalue(), 'expected output')
# do more things
Doctest verwendet nämlich einige Heuristiken, um die Ausgaben zu vergleichen, z. B. Ellipsis.
Kann mir jemand eine Idee oder einen Vorschlag machen?