ML_OPS_Project / tests /test_app.py
lucabadiali
Added app testing
b603fd0
from fastapi.testclient import TestClient
from app.app import app
client = TestClient(app)
def test_correct_response_structure():
data = {
"input_texts" :
"Today I am feeling very happy!!"
}
response = client.post("/predict", json = data)
response_json = response.json()
assert response.status_code == 200
assert "status" in response_json.keys()
assert "response_body" in response_json.keys()
response_body = response_json["response_body"][0]
assert "input_text" in response_body.keys()
assert "prediction" in response_body.keys()
assert "scores" in response_body.keys()
def test_incorrect_response():
data = {
"input_texts" :
5
}
response = client.post("/predict", json = data)
response_json = response.json()
assert response.status_code == 422 # validation error by pedantic
def test_single_prediction():
input_text = "Today I am feeling very happy!!"
data = {
"input_texts" : input_text
}
response = client.post("/predict", json = data)
response_json = response.json()
assert response.status_code == 200
assert response_json["status"] == "successful"
response_body = response_json["response_body"]
assert len(response_body) == 1
response_body = response_body[0]
assert response_body["input_text"] == input_text
assert response_body["prediction"] in ["positive", "negative", "neutral"]
scores = response_body["scores"]
assert type(scores)==dict
assert len(scores)==3
assert list(scores.keys()) == ["negative", "neutral", "positive"]
for sentiment in scores.keys():
assert type(scores[sentiment])==float
def test_multiple_predictions():
input_texts = ["Today I am feeling very happy!!",
"Today I am not feeling very happy at all!!",
"Today I am feeling no particular mood."]
data = {
"input_texts" : input_texts
}
response = client.post("/predict", json = data)
response_json = response.json()
assert response.status_code == 200
assert response_json["status"] == "successful"
response_body = response_json["response_body"]
assert len(response_body) == len(input_texts)
for i in range(len(response_body)):
single_response = response_body[i]
assert single_response["input_text"] == input_texts[i]
assert single_response["prediction"] in ["positive", "negative", "neutral"]
scores = single_response["scores"]
assert type(scores)==dict
assert len(scores)==3
assert list(scores.keys()) == ["negative", "neutral", "positive"]
for sentiment in scores.keys():
assert type(scores[sentiment])==float