import pytest @pytest.mark.parametrize("model", ["Logistic Regression", "Bi-LSTM", "RoBERTa Transformer"]) def test_predict_returns_all_required_fields(client, model, prediction_payload, auth_headers): response = client.post( "/predict", json=prediction_payload("I like it.", model), headers=auth_headers ) data = response.json() assert "prediction" in data assert "confidence_scores" in data assert "confidence" in data assert "latency" in data assert "model_used" in data assert "certainty" in data assert "total_time" in data assert "trace" in data assert "words" in data assert "characters" in data assert "sentences" in data assert "complexity" in data assert "insight" in data assert "llm_used" in data @pytest.mark.parametrize("model", ["Logistic Regression", "Bi-LSTM", "RoBERTa Transformer"]) def test_predict_confidence_scores_sum_to_one(client, model, prediction_payload, auth_headers): response = client.post( "/predict", json=prediction_payload("I like it.", model), headers=auth_headers ) assert sum(response.json()["confidence_scores"]) == pytest.approx(1.0) @pytest.mark.parametrize("model", ["Logistic Regression", "Bi-LSTM", "RoBERTa Transformer"]) def test_predict_confidence_between_zero_and_one(client, model, prediction_payload, auth_headers): response = client.post( "/predict", json=prediction_payload("I like it.", model), headers=auth_headers ) conf_scores = response.json()["confidence_scores"] assert 0