Pytest で argparse を利用しているコードをテスト ― 2022年02月08日 13時32分40秒
argparse の使い方を見ただけでは、どうやって pytest でテストを記述出来るかは流石に見抜けない。調べて、あれこれと指向錯誤する必要があった。一部の記事は古くなっているのかも知れない。現在手元で動作確認したのは Python 3.7。他にも、3.6 と 3.8 も使っているがそちらではまだ試す時間は取れていない。
簡潔に言うと、argparse は sys.argv を見に行くので、そこを unittest.mock.patch で置き換えてやれば良い。
from unittest.mock import patch
def test_argparse():
with patch( "sys.argv", [ "program", "-a", "-b", "-c", "config.json" ] ):
parser = argparse.ArgumentParser()
....
parser.parse_args()
コメント
トラックバック
このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2022/02/08/9462352/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。