BlurMe/ml/test.py
2024-01-09 02:15:41 +01:00

59 lines
2.6 KiB
Python

import unittest
from unittest.mock import Mock, patch
from element_detection import detect, BoundBox
from graphics.image_modification import show_image_with_boxes
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)