File size: 915 Bytes
b34c4f2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import io
import math
import unittest

from PIL import Image

import app


class InferenceTest(unittest.TestCase):
    @classmethod
    def setUpClass(cls) -> None:
        app.load_model()

    def test_preprocessing_and_model_contract(self) -> None:
        image = Image.new("RGB", (320, 240), (90, 160, 120))
        buffer = io.BytesIO()
        image.save(buffer, format="JPEG")

        tensor = app.preprocess_image(buffer.getvalue())
        label, confidence, probabilities = app.predict(buffer.getvalue())

        self.assertEqual(tensor.shape, (1, 3, 224, 224))
        self.assertIn(label, app.CLASS_NAMES)
        self.assertGreaterEqual(confidence, 0.0)
        self.assertLessEqual(confidence, 1.0)
        self.assertEqual(tuple(probabilities), app.CLASS_NAMES)
        self.assertTrue(math.isclose(sum(probabilities.values()), 1.0, abs_tol=1e-6))


if __name__ == "__main__":
    unittest.main()