litellm/tests/local_testing/test_wandb.py
Mateo Wang c1602587c1
fix(tests): drop module-level test calls that break local_testing collection (#29520)
* fix(tests): drop module-level test calls that break local_testing collection

Several files in tests/local_testing invoked their test functions at module
scope (e.g. test_register_model.py ran test_update_model_cost_via_completion()
at the bottom of the file). Those calls execute during pytest collection, so
they fire real network requests at import time. test_register_model.py's call
hit an OpenAI 429 and raised, turning into a collection error.

A collection error aborts the whole session for every job that globs
tests/local_testing/**/test_*.py, which is why unrelated jobs like
langfuse_logging_unit_tests (-k langfuse) and litellm_assistants_api_testing
(-k assistants) both failed even though neither touches register_model;
the -k filter only applies after collection.

pytest discovers and runs these test_* functions on its own, so the top-level
calls were dead and harmful. Removes them from test_register_model.py,
test_wandb.py, test_lunary.py, and test_multiple_deployments.py, and adds a
regression test that scans the directory for module-level test invocations.

* test(local_testing): skip unparseable files in module-scope invocation guardrail

A syntax error in any tests/local_testing file would make ast.parse raise an
unhandled SyntaxError, so the guardrail itself would crash with a confusing
traceback instead of its assertion message. Such a file already fails pytest
collection on its own, which is the clearer signal, so the guardrail now skips
files it cannot parse and stays focused on detecting module-scope test calls.
Reads files as utf-8 for deterministic behavior across platforms.
2026-06-02 13:07:05 -07:00

70 lines
1.7 KiB
Python

import sys
import os
import io, asyncio
# import logging
# logging.basicConfig(level=logging.DEBUG)
sys.path.insert(0, os.path.abspath("../.."))
from litellm import completion
import litellm
litellm.num_retries = 3
litellm.success_callback = ["wandb"]
import time
import pytest
def test_wandb_logging_async():
try:
litellm.set_verbose = False
async def _test_langfuse():
from litellm import Router
model_list = [
{ # list of model deployments
"model_name": "gpt-3.5-turbo",
"litellm_params": { # params for litellm completion/embedding call
"model": "gpt-3.5-turbo",
"api_key": os.getenv("OPENAI_API_KEY"),
},
}
]
router = Router(model_list=model_list)
# openai.ChatCompletion.create replacement
response = await router.acompletion(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": "this is a test with litellm router ?"}
],
)
print(response)
response = asyncio.run(_test_langfuse())
print(f"response: {response}")
except litellm.Timeout as e:
pass
except Exception as e:
pass
def test_wandb_logging():
try:
response = completion(
model="claude-3-5-haiku-20241022",
messages=[{"role": "user", "content": "Hi 👋 - i'm claude"}],
max_tokens=10,
temperature=0.2,
)
print(response)
except litellm.Timeout as e:
pass
except Exception as e:
print(e)
# test_wandb_logging()