waste-classification-api / tests /test_inference.py
voxnuts947's picture
Triển khai API phân loại rác bằng ONNX
b34c4f2 verified
Raw
History Blame Contribute Delete
915 Bytes
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()