最近、Python での単体テストと doctest の組み合わせに関する問題に直面しました。他の方法でこの問題を回避しましたが、まだ疑問があります。
Python の doctest モジュールは、モジュール内の docstring を解析し、各行の先頭で ">>> " に続くコマンドを実行し、その出力と docstring の出力を比較します。
doctest モジュールで実装されているその比較方法を、必要なときに使用できるのだろうかと思います。doctest をテスト ケースとしてテスト スイートに追加できることはわかっていますが、ここでは単一のテスト ケース内で実行したいと考えています。
それは次のようなものです:
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 はいくつかのヒューリスティックを使用して、省略記号などの出力を比較するためです。
誰かがアイデアや提案をしてくれませんか?