2023-11-28 18:59:33 +01:00
|
|
|
import unittest
|
|
|
|
from unittest.mock import Mock, patch
|
2023-12-19 09:32:05 +01:00
|
|
|
from element_detection import detect, BoundBox
|
|
|
|
from BlurMe.graphics.image_modification import show_image_with_boxes
|
|
|
|
|
2023-11-28 18:59:33 +01:00
|
|
|
|
|
|
|
class TestYourModule(unittest.TestCase):
|
|
|
|
|
|
|
|
@patch('element_detection.FACES_MODEL.predict')
|
|
|
|
@patch('element_detection.PLATES_MODEL.predict')
|
|
|
|
def test_detect(self, mock_plates_predict, mock_faces_predict):
|
|
|
|
# Przygotuj dane testowe
|
|
|
|
image_path = 'blurme/ml/MicrosoftTeams-image.png'
|
|
|
|
mock_faces_predict.__iter__.return_value = [Mock(cpu=Mock(return_value=Mock(numpy=Mock(boxes=[Mock(xyxy=[1, 2, 3, 4])]))))]
|
|
|
|
mock_plates_predict.__iter__.return_value = [Mock(cpu=Mock(return_value=Mock(numpy=Mock(boxes=[Mock(xyxy=[5, 6, 7, 8])]))))]
|
|
|
|
|
|
|
|
# Wywołaj funkcję
|
|
|
|
result = detect(image_path)
|
|
|
|
|
|
|
|
# Sprawdź, czy otrzymałeś oczekiwany wynik
|
|
|
|
expected_result = [BoundBox(1, 2, 3, 4), BoundBox(5, 6, 7, 8)]
|
|
|
|
self.assertEqual(result, expected_result)
|
|
|
|
|
|
|
|
@patch('element_detection.ImageDraw.Draw')
|
|
|
|
@patch('element_detection.ImageFont.truetype')
|
|
|
|
#@patch('element_detection.Image.save')
|
|
|
|
@patch('element_detection.Image.open')
|
|
|
|
def test_show_image_with_boxes(self, mock_image_open,
|
|
|
|
#mock_image_save,
|
|
|
|
mock_truetype, mock_draw):
|
|
|
|
# Przygotuj dane testowe
|
|
|
|
in_image_path = 'blurme/ml/MicrosoftTeams-image.png'
|
|
|
|
bounding_boxes = [BoundBox(1, 2, 3, 4), BoundBox(5, 6, 7, 8)]
|
|
|
|
|
|
|
|
# Wywołaj funkcję
|
|
|
|
show_image_with_boxes(in_image_path, bounding_boxes)
|
|
|
|
|
|
|
|
# Sprawdź, czy odpowiednie metody zostały wywołane z oczekiwanymi argumentami
|
|
|
|
mock_image_open.assert_called_once_with(in_image_path)
|
|
|
|
mock_draw.assert_called_once()
|
|
|
|
# mock_image_save.assert_called_once()
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
unittest.main()
|
|
|
|
|
|
|
|
def test_detect_with_stub(self, mock_plates_predict, mock_faces_predict):
|
|
|
|
# Przygotuj dane testowe
|
|
|
|
image_path = 'blurme/ml/MicrosoftTeams-image.png'
|
|
|
|
mock_faces_predict.__iter__.return_value = [Mock(cpu=Mock(return_value=Mock(numpy=Mock(boxes=[Mock(xyxy=[1, 2, 3, 4])]))))]
|
|
|
|
mock_plates_predict.__iter__.return_value = [Mock(cpu=Mock(return_value=Mock(numpy=Mock(boxes=[Mock(xyxy=[5, 6, 7, 8])]))))]
|
|
|
|
|
|
|
|
# Użyj stuba zamiast rzeczywistego BoundBox
|
|
|
|
with patch('element_detection.BoundBox', StubBoundBox):
|
|
|
|
# Wywołaj funkcję
|
|
|
|
result = detect(image_path)
|
|
|
|
|
|
|
|
# Sprawdź, czy otrzymałeś oczekiwany wynik
|
|
|
|
expected_result = [StubBoundBox(1, 2, 3, 4), StubBoundBox(5, 6, 7, 8)]
|
|
|
|
self.assertEqual(result, expected_result)
|