如何在 python 中修补 google.cloud.storage

How to patch google.cloud.storage in python

我有一个 class 导入 google 云:

StorageUtils:

from google.cloud import storage

我有一个使用 StorageUtils 的应用程序:

应用程序:

import StorageUtils

然后我有一个测试,我想测试我的应用程序

测试:

from app import App

我想在不使用 google 云的情况下测试我的应用程序。我发现最简单的方法是使用 sys.modules:

import sys
from unittest.mock import MagicMock
sys.modules["google.cloud.storage"] = MagicMock()

我发现这个解决方案非常有效。还有其他使用 python mock 的方法吗?

在这种情况下,如果包含 class StorageUtils 的文件被调用 storage_utils.py:

#test_storage.py
@patch("storage_utils.storage")
def test_storage(st):
    storage = StorageUtils()