2 Stimmen

Verwendung von doctest "Ergebnisparser" innerhalb von Unit-Tests in Python?

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?

2voto

jfs Punkte 370717

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X