2009-06-13 5 views
2

Ich hatte kürzlich ein Problem mit der Kombination von Unit-Tests und Doctests in Python. Ich habe dieses Problem auf andere Weise gelöst, aber ich habe immer noch Fragen dazu.Verwendung von Doctest "Ergebnis Parser" innerhalb Unit-Tests in Python?

Das Dictest-Modul von Python analysiert Docstrings in einem Modul und führt Befehle nach ">>>" am Anfang jeder Zeile aus und vergleicht die Ausgabe mit denen in Docstrings.

Ich frage mich, ob ich diese Vergleichsmethode durch Doctest-Modul implementiert verwenden könnte, wenn ich will. Ich weiß, dass es möglich ist, doctest als Testfall in die Testsuite aufzunehmen, aber hier möchte ich es in einem Testfall tun.

Es ist so etwas wie dieses:

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 

Da doctest einige Heuristiken verwendet die Ausgänge wie Ellipsen zu vergleichen.

Würde jemand eine Idee oder Vorschläge geben?

Antwort