# conftest.py import importlib import os import sys import asyncio import pytest sys.path.insert( 0, os.path.abspath("../..") ) # Adds the parent directory to the system path import litellm @pytest.fixture(scope="session") def event_loop(): """Create an instance of the default event loop for each test session.""" loop = asyncio.get_event_loop_policy().new_event_loop() yield loop loop.close() @pytest.fixture(scope="function", autouse=True) def setup_and_teardown(event_loop): # Add event_loop as a dependency curr_dir = os.getcwd() sys.path.insert(0, os.path.abspath("../..")) import litellm from litellm import Router importlib.reload(litellm) # Set the event loop from the fixture asyncio.set_event_loop(event_loop) print(litellm) yield # Clean up any pending tasks pending = asyncio.all_tasks(event_loop) for task in pending: task.cancel() # Run the event loop until all tasks are cancelled if pending: event_loop.run_until_complete(asyncio.gather(*pending, return_exceptions=True)) def pytest_collection_modifyitems(config, items): # Separate tests in 'test_amazing_proxy_custom_logger.py' and other tests custom_logger_tests = [ item for item in items if "custom_logger" in item.parent.name ] other_tests = [item for item in items if "custom_logger" not in item.parent.name] # Sort tests based on their names custom_logger_tests.sort(key=lambda x: x.name) other_tests.sort(key=lambda x: x.name) # Reorder the items list items[:] = custom_logger_tests + other_tests