Как провести модульное тестирование класса Python, которому необходимо выполнить вызов API к внешней службе?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как провести модульное тестирование класса Python, которому необходимо выполнить вызов API к внешней службе?

Сообщение Anonymous »

Класс предназначен для оболочки удаленно размещенной большой языковой модели и должен выполнить API-вызов службы для получения результатов. Это пример.

Код: Выделить всё

class ModelWrapper(AbstractLLMInterface):
"""The Claude 3 Sonnet model wrapper following the interface."""

def __init__(
self,
region: str = CONFIGS["GCP"]["REGION"],
project: str = get_gcp_project_id(),
model: str = CONFIGS["MODELS"]["SONNET_ID"],
) -> None:
"""Set up the claude client using the region and project."""
self.client: AnthropicVertex = AnthropicVertex(region=region, project_id=project)
self.model_name: str = model
self.role_key: str = "role"
self.content_key: str = "content"
self.user_key: str = "user"
llm_logger.debug(msg=f"Initialised sonnet client for {region}, {project} and {self.model_name}.")

def get_completion(self, user_prompt: str, system_prompt: str, history: List[Correspondence]) -> Iterator[str]:
"""
Fetch a response from the model.This requires an egress request to GCP and the
service for Anthropic model must be enabled in the VertexAI console.
"""

# This is where the API call to GCP service happens
return self.client.messages.stream(user_prompt, system_prompt, history)
Мне известны MagicMocks для модульного тестирования Python, которые представляют собой объекты, которые можно настроить так, чтобы они возвращали все, что я захочу. Но в данном случае все параметры конструктора представляют собой простые строки, а клиент встроен внутри класса. Значит, нет места для макетного клиента, верно?
Означает ли это, что любой модульный тест должен выполнять вызов API? Или класс спроектирован неправильно? Любая помощь будет оценена по достоинству.
Класс должен быть доступным для тестирования без вызова API.

Подробнее здесь: https://stackoverflow.com/questions/793 ... external-s
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»