added mocked server tests with flask testing uitilities
This commit is contained in:
parent
3d1c251e10
commit
b4b929b65f
@ -28,7 +28,7 @@ def make_prediction_server(predict_fn: Callable):
|
|||||||
resp.status_code = 200
|
resp.status_code = 200
|
||||||
return resp
|
return resp
|
||||||
|
|
||||||
@app.route("/", methods=["POST"])
|
@app.route("/predict", methods=["POST"])
|
||||||
def predict():
|
def predict():
|
||||||
def predict_fn_wrapper(pdf, return_dict):
|
def predict_fn_wrapper(pdf, return_dict):
|
||||||
return_dict["result"] = predict_fn(pdf)
|
return_dict["result"] = predict_fn(pdf)
|
||||||
|
|||||||
@ -1,16 +1,11 @@
|
|||||||
import os
|
|
||||||
import socket
|
import socket
|
||||||
from multiprocessing import Process
|
from multiprocessing import Process
|
||||||
|
|
||||||
import coverage
|
|
||||||
import pytest
|
import pytest
|
||||||
import requests
|
import requests
|
||||||
from funcy import retry
|
from funcy import retry
|
||||||
|
|
||||||
from image_prediction.flask import make_prediction_server, run_prediction_server
|
from image_prediction.flask import make_prediction_server, run_prediction_server
|
||||||
from image_prediction.locations import COVERAGERC
|
|
||||||
|
|
||||||
# os.environ['COVERAGE_PROCESS_START'] = COVERAGERC
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
@ -35,16 +30,8 @@ def url(host, port):
|
|||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def predict_fn():
|
def server():
|
||||||
def predict(_):
|
server = make_prediction_server(lambda _: 42)
|
||||||
return 42
|
|
||||||
|
|
||||||
return predict
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
|
||||||
def server(predict_fn):
|
|
||||||
server = make_prediction_server(predict_fn)
|
|
||||||
return server
|
return server
|
||||||
|
|
||||||
|
|
||||||
@ -63,7 +50,6 @@ def server_ready(url):
|
|||||||
@pytest.fixture(autouse=True, scope="function")
|
@pytest.fixture(autouse=True, scope="function")
|
||||||
def server_process(server, host_and_port, url):
|
def server_process(server, host_and_port, url):
|
||||||
def get_server_process():
|
def get_server_process():
|
||||||
# coverage.process_startup()
|
|
||||||
return Process(target=run_prediction_server, kwargs={"app": server, **host_and_port})
|
return Process(target=run_prediction_server, kwargs={"app": server, **host_and_port})
|
||||||
|
|
||||||
server = get_server_process()
|
server = get_server_process()
|
||||||
@ -78,7 +64,7 @@ def server_process(server, host_and_port, url):
|
|||||||
|
|
||||||
|
|
||||||
def test_server_predict(url):
|
def test_server_predict(url):
|
||||||
response = requests.post(url)
|
response = requests.post(f"{url}/predict")
|
||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
assert response.json() == 42
|
assert response.json() == 42
|
||||||
|
|
||||||
|
|||||||
32
test/unit_tests/mocked_server_test.py
Normal file
32
test/unit_tests/mocked_server_test.py
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
import json
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
from image_prediction.flask import make_prediction_server
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def server():
|
||||||
|
server = make_prediction_server(lambda _: 42)
|
||||||
|
server.config.update({"TESTING": True})
|
||||||
|
return server
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def client(server):
|
||||||
|
return server.test_client()
|
||||||
|
|
||||||
|
|
||||||
|
def test_server_predict(client):
|
||||||
|
response = client.post("/predict")
|
||||||
|
assert json.loads(response.data) == 42
|
||||||
|
|
||||||
|
|
||||||
|
def test_server_health_check(client):
|
||||||
|
response = client.get("/health")
|
||||||
|
assert response.status_code == 200
|
||||||
|
|
||||||
|
|
||||||
|
def test_server_ready_check(client):
|
||||||
|
response = client.get("/health")
|
||||||
|
assert response.status_code == 200
|
||||||
Loading…
x
Reference in New Issue
Block a user