Spaces:
Running
Running
File size: 2,004 Bytes
bb96fca |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
from typing import Protocol, runtime_checkable
import pytest
from unittest.mock import MagicMock, patch
from io import BytesIO
#from PIL import Image
import datetime
import numpy as np
#from streamlit.runtime.uploaded_file_manager import UploadedFile # for type hinting
#from typing import List, Union
from input.input_observation import InputObservation
@runtime_checkable
class UploadedFile(Protocol):
name: str
size: int
type: str
_file_urls: list
def getvalue(self) -> bytes: ...
def read(self) -> bytes: ...
class MockUploadedFile(BytesIO):
def __init__(self,
initial_bytes: bytes,
*, # enforce keyword-only arguments after now
name:str,
size:int,
type:str):
#super().__init__(*args, **kwargs)
super().__init__(initial_bytes)
self.name = name
self.size = size
self.type = type
self._file_urls = [None,]
@pytest.fixture
def mock_uploadedFile():
class MockGUIClass(MagicMock):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
name = kwargs.get('name', 'image2.jpg')
size = kwargs.get('size', 123456)
type = kwargs.get('type', 'image/jpeg')
self.bytes_io = MockUploadedFile(
b"test data", name=name, size=size, type=type)
self.get_data = MagicMock(return_value=self.bytes_io)
return MockGUIClass
# let's first generate a test for the mock_uploaded_file and MockUploadedFile class
# - test with valid input
def test_mock_uploaded_file(mock_uploadedFile):
# setup values for the test (all valid)
image_name = "test_image.jpg"
mock_file = mock_uploadedFile(name=image_name).get_data()
#print(dir(mock_file))
assert isinstance(mock_file, BytesIO)
assert mock_file.name == image_name
assert mock_file.size == 123456
assert mock_file.type == "image/jpeg"
|