Files
litellm/tests/test_model_cost_map_url.py
T
Matt Cowger e0d6774ec1 fix: update model_cost_map_url to use environment variable (#16429)
* fix: update model_cost_map_url to use environment variable, to match behavior to documentation in docs/my-website/docs/proxy/sync_models_github.md

* Add an appropriate test.
2025-11-10 19:30:44 -08:00

47 lines
1.4 KiB
Python

import importlib
import sys
def test_model_cost_map_url_from_env(monkeypatch):
"""Ensure `LITELLM_MODEL_COST_MAP_URL` env var is picked up on import and used by get_model_cost_map."""
test_url = "https://example.com/test_model_cost_map.json"
# A minimal model cost map we expect to be loaded
model_json = {
"my-test-model": {
"input_cost_per_token": 0.123,
"output_cost_per_token": 0.456,
"litellm_provider": "openai",
"mode": "chat",
}
}
class DummyResp:
def raise_for_status(self):
return None
def json(self):
return model_json
# Point litellm at our test URL
monkeypatch.setenv("LITELLM_MODEL_COST_MAP_URL", test_url)
# Mock httpx.get to return our dummy response
import httpx
monkeypatch.setattr(httpx, "get", lambda url, timeout=5: DummyResp())
# Reload the litellm package so top-level import picks up the env var
if "litellm" in sys.modules:
importlib.reload(sys.modules["litellm"])
else:
import litellm # noqa: F401
importlib.reload(litellm)
import litellm as ll # re-import for assertions
# The package should have picked up the env var and loaded our model map
assert getattr(ll, "model_cost_map_url") == test_url
assert "my-test-model" in ll.model_cost
assert ll.model_cost["my-test-model"]["input_cost_per_token"] == 0.123