import json import logging import pytest from image_prediction.flask import make_prediction_server from image_prediction.utils import get_logger logger = get_logger() logger.setLevel(logging.CRITICAL + 1) def predict_fn(x: bytes): x = int(x.decode()) if x == 42: return True else: raise Exception("intentional test exception") @pytest.fixture def server(): server = make_prediction_server(predict_fn) server.config.update({"TESTING": True}) return server @pytest.fixture def client(server): return server.test_client() def test_server_predict_success(client): response = client.post("/predict", data="42") assert json.loads(response.data) def test_server_predict_failure(client): response = client.post("/predict", data="13") assert response.status_code == 500 def test_server_health_check(client): response = client.get("/ready") assert response.status_code == 200 assert response.json == "OK" def test_server_ready_check(client): response = client.get("/health") assert response.status_code == 200 assert response.json == "OK"