0

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が、それでも繰り返しです。

4

1 に答える 1