【发布时间】:2020-11-04 00:02:30
【问题描述】:
我很难找到一种方法来对此类中的read 和write 方法进行单元测试。我正在尝试使用模拟补丁库创建一个模拟,以避免调用 Google 存储,但我很难弄清楚如何去做。
from google.cloud import storage
class GCSObject(str):
def __init__(self, uri=""):
self.base, self.bucket, self.path = self.parse_uri(uri)
def parse_uri(self, uri):
uri = uri.lstrip("gs://").replace("//", "/").split("/", 1)
if len(uri) > 1:
return ("gs://", uri[0], uri[1])
else:
return ("gs://", uri[0], "")
def read(self) -> bytes:
storage_client = storage.Client()
bucket = storage_client.bucket(self.bucket)
return bucket.blob(self.path).download_as_string()
def write(self, content: bytes):
storage_client = storage.Client()
bucket = storage_client.get_bucket(self.bucket)
blob = bucket.blob(self.path)
blob.upload_from_string(content)
我目前正在尝试做的事情
@mock.patch("packages.pyGCP.pyGCP.gcs.storage.Client")
def test_upload(client):
gcs_path = GCSObject("fake_path")
reader = gcs_path.read()
# confused what I should assert
【问题讨论】:
-
惊人的资源!
标签: python unit-testing testing google-cloud-storage python-mock