0

モデルからIDを受け取り、ファイルアドレスを取得し、os.removeを使用して削除するdjangoの関数ベースのビュー関数があります

image = Images.objects.get(id=image_id)
os.remove(image.file)

image_id は有効で、フィクスチャの一部です。

コードをテストするたびに手動でファイルを作成せずに、このビューのテストを作成する最良の方法は何ですか?

テスト用に os.remove 関数の動作を変更する方法はありますか?

4

1 に答える 1

1

はい。これはモッキングと呼ばれ、そのための Python ライブラリがあります: モック。unittest.mockMock は、Python 3.3 以降では標準ライブラリで、以前のバージョンではスタンドアロンで利用できます。

したがって、次のようにします。

from mock import patch
...
@patch('mymodel_module.os.remove')
def test_my_method(self, mocked_remove):
    call_my_model_method()
    self.assertTrue(mocked_remove.called)

mymodel_moduleモデルが定義され、おそらくインポートするmodels.pyはどこにありますかos。)

于 2015-05-18T21:49:32.930 に答える