自動テストを実行する際に、スクリプトがディスクにデータを書き込んでいないことを確認したいと思います。私は、個々の機能の単体テストではなく、スクリプト全体のテストを行っています。Python内からディスクへのすべての書き込みを防ぐ方法
このスクリプト内でPythonスクリプトが実行するすべてのDisk-IOを傍受する方法はありますか?
明らかに、私はオープン機能を模擬することができます(例えばモックパッケージhttp://www.voidspace.org.uk/python/mock/helpers.html?#mock-open)。問題はオープンがどのモジュールで発生するかを知る必要があることです。私は__main__.open
と同様に__module1.open
とmodule2.open
などを嘲笑しなければなりません。 問題は、どのモジュールがファイルに書き込むのかわからないことです。
以前のリビジョンはうまく機能していました。 –
私は推測していますが、* nixマシンで実行している場合は、I/Oをリダイレクトしてディスクに書き込まないようにすることができると思います。このようにして、別の実行のためにI/Oをもう一度持つことができるようにするために、アプリケーションコードに触れる必要はありません。 – Marcs
@Marcsリダイレクションは、スクリプトが標準出力に書き込んでいる(またはより一般的には、呼び出し元から継承したファイルを開く)場合にのみ機能します。呼び出し元はスクリプトが明示的に開くファイルを制御できません。 – chepner