I have a hard time to find a way to make a unit test for the read
and write
methods present in this class. I am trying to create a mock with the mock patch library in order to avoid calling Google Storage but I have a hard time figure out how to do it.
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)
What I am currently trying to do
@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
Aucun commentaire:
Enregistrer un commentaire