7

「python -m package arguments 」として実行するように設計した Python パッケージ (違いがある場合は Python 3.6) があり、__main__.py モジュールの単体テストを作成したいと考えています。特に、終了コードが正しく設定されていることを確認したいと思います。runpy.run_module を使用して __main__.py を実行し、終了コードをテストすることは可能ですか? もしそうなら、どうすれば終了コードを取得できますか?

より明確にするために、私の __main__.py モジュールは非常に単純です。広範囲に単体テストされた関数を呼び出すだけです。しかし、最初に __main__.py を書いたときに、その関数の結果を exit() に渡すのを忘れていたので、main 関数がモックされている場所で単体テストを行い、終了コードが正しく設定されていることを確認したいと思います。私の単体テストは次のようになります。

@patch('my_module.__main__.my_main', return_value=2)
def test_rc2(self, _):
    """Test that rc 2 is the exit code."""
    sys.argv = ['arg0', 'arg1', 'arg2', …]
    runpy.run_module('my_module')
    self.assertEqual(mod_rc, 2)

私の質問は、ここに「mod_rc」として書いたものをどのように取得するのですか?

ありがとう。

4

3 に答える 3