unittest
ターミナルインタラクティブユーティリティをテストするために使用しています。非常によく似たコンテキストを持つ 2 つのテスト ケースがあります。1 つは正しい出力のテスト、もう 1 つは対話モードでのユーザー コマンドの正しい処理のテストです。ただし、どちらの場合も、実際の出力を抑制するためにモックを作成sys.stdout
します (対話的な作業の過程でも出力が実行されます)。
次の点を考慮してください。
class StdoutOutputTestCase(unittest.TestCase):
"""Tests whether the stuff is printed correctly."""
def setUp(self):
self.patcher_stdout = mock.patch('sys.stdout', StringIO())
self.patcher_stdout.start()
# Do testing
def tearDown(self):
self.patcher_stdout.stop()
class UserInteractionTestCase(unittest.TestCase):
"""Tests whether user input is handled correctly."""
def setUp(self):
self.patcher_stdout = mock.patch('sys.stdout', StringIO())
self.patcher_stdout.start()
# Do testing
def tearDown(self):
self.patcher_stdout.stop()
私が気に入らないのは、コンテキストのセットアップがここで 2 回繰り返されることです (今のところ、時間の経過とともにさらに多くなる可能性があります)。
両方のケースに共通のコンテキストを設定する良い方法はありますか? 私unittest.TestSuite
を助けることができますか?はいの場合、どのように?一般的なコンテキスト設定の例が見つかりませんでした。
setup_common_context
また、両方のケースから呼び出される関数を定義することも考えましたsetUp
が、それでも繰り返しです。