Python でモックを使用すると、トップ レベルのパッケージ (argparse など) に完全にパッチを適用することはできません。おそらく、パッチへの参照がないためです。1 つの解決策は、個々の呼び出しをすべてパッケージにパッチすることです (argparse.ArgumentParser など)。理論的には、パッケージへの呼び出しが対応するパッチなしで追加された場合、単体テスト中に誤ってインポートが呼び出されることになります。
回避策はそれほど不便ではありませんが、argparse などのパッケージに完全にパッチを適用するのが理想的です。mock_openopen()
は、 を使用して組み込みにパッチを当てるために、いくつかの悪ふざけを採用しているよう__main__.open
です。それはどのように機能し、トップレベルのパッケージにパッチを当てるために同様の悪ふざけを使用できますか?