[解決済み] if __name__ == '__main__'" の内容をテストまたはモック化する方法
2023-07-28 09:11:05
質問
以下のようなモジュールを持っているとします。
def main():
pass
if __name__ == "__main__":
main()
下半分の単体テストを書きたい(カバレッジ100%を目指したい)。私が発見したのは
runpy
を実行するビルトインモジュールを発見しました。
__name__
-の設定機構を実行するモジュールですが、モックやその他の方法で
main()
関数が呼び出されたことを確認する方法がわかりません。
ここまで試した内容です。
import runpy
import mock
@mock.patch('foobar.main')
def test_main(self, main):
runpy.run_module('foobar', run_name='__main__')
main.assert_called_once_with()
どのように解決するのですか?
もう一つの方法、それは
if __name__ == '__main__'
をカバレッジレポートから除外することです。もちろん、すでにテストの中でmain()関数のテストケースを持っている場合のみ、これを行うことができます。
なぜスクリプト全体に対して新しいテストケースを書くのではなく、除外することにしたかというと、もし私が述べたように、あなたがすでにあなたの
main()
関数のテストケースがある場合、スクリプトに別のテストケースを追加すると、(カバレッジを100%にするためだけに)重複したテストケースになるからです。
を除外する方法については
if __name__ == '__main__'
を除外する方法は、カバレッジ設定ファイルを書いて、セクションレポートに追加すればよいでしょう。
[report]
exclude_lines =
if __name__ == .__main__.:
カバレッジ設定ファイルについての詳しい情報は はこちら .
これが助けになることを願っています。
関連
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] モックとスタブの違いは何ですか?
-
[解決済み] Mockitoでvoidメソッドをモックする方法
-
[解決済み】if __name__ == "__main__": は何をするのでしょうか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
-
[解決済み] googletransがエラー 'NoneType' オブジェクトに 'group' 属性がない、と言って動かなくなった。
-
[解決済み] ファブリック経由でデプロイユーザとしてvirtualenvを有効化する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pythonのキャッシュライブラリはありますか?
-
[解決済み] PythonでSVGからPNGに変換する
-
[解決済み] スペースがないテキストを単語のリストに分割する方法
-
[解決済み] SQLAlchemy - テーブルのリストを取得する
-
[解決済み] tensorflowのCPUのみのインストールでダイナミックライブラリ 'cudart64_101.dll' を読み込めなかった
-
[解決済み] Pythonによる一対のクロスプロダクト [重複] (英語)
-
[解決済み] pycharmがタブをスペースに自動変換する
-
[解決済み] Pythonの検索パスを他のソースに展開する
-
[解決済み] Pythonでファイルの読み込みと上書きをする
-
[解決済み] データクラスとtyping.NamedTupleの主な使用例