mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-12 03:48:56 +00:00
* test(integration): exact four-part translation cases on a shared fake provider and shared YAML deployment Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * test(integration): compare every non-transport provider header and check for late provider requests at session end Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * test(integration): name TranslationTestCase fields after litellm and provider sides and drop regressions Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * test(integration): prefix checked TranslationTestCase fields with expected_ and name the fake reply mock_provider_response Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * docs(integration): name TranslationTestCase fields in the translation README Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * test(integration): add a claude-opus-5-5 base case and deployment next to claude-sonnet-4-6 Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * test(integration): name translation cases <MODEL>_TEST_CASE and document the naming rule Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * docs(integration): move translation test rules into tests/integration/translation Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --------- Co-authored-by: kerry <kerry@berri.ai> Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
24 lines
900 B
Python
24 lines
900 B
Python
from collections.abc import Mapping
|
|
from dataclasses import dataclass
|
|
|
|
from pydantic import JsonValue
|
|
|
|
|
|
@dataclass(frozen=True, slots=True, kw_only=True)
|
|
class TranslationTestCase:
|
|
"""One request through the proxy to a deployment in `proxy_config.yaml`: what the test sends to LiteLLM, the
|
|
exact request the provider must receive, the fake provider's reply, and the exact response LiteLLM must return."""
|
|
|
|
scenario: str
|
|
litellm_endpoint: str
|
|
litellm_request: Mapping[str, JsonValue]
|
|
expected_provider_endpoint: str
|
|
expected_provider_headers: Mapping[str, str]
|
|
expected_provider_request: Mapping[str, JsonValue]
|
|
mock_provider_response: Mapping[str, JsonValue]
|
|
expected_litellm_status_code: int = 200
|
|
expected_litellm_response: Mapping[str, JsonValue]
|
|
|
|
@property
|
|
def id(self) -> str:
|
|
return f"{self.litellm_request['model']}-{self.scenario}"
|