53 lines
1.1 KiB
Python

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 RuntimeError("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"