Как выполнить модульное тестирование клиента gRPC, моделируя grpc.GrpcError в PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как выполнить модульное тестирование клиента gRPC, моделируя grpc.GrpcError в Python

Сообщение Anonymous »

Я реализовал сервер и клиент gRPC по этому примеру.
Я использую метод grpc.ServicerContext.abort_with_status(), чтобы вызвать исключения на сервере.Модульные тесты для случаев ошибок на сервере пишутся так же, как я вызываю сервер с клиента, перехватывая исключение grpc.GrpcClient:

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

    try:
result = client.my_rpc(request)
except grpc.RpcError as rpc_error:
status = rpc_status.from_call(rpc_error)
Теперь я хочу протестировать клиент, но не нашел способа проверить случаи возникновения этого исключения. Я пытаюсь имитировать вызов метода-заглушки, чтобы вызвать это исключение.
Но в тестах при попытке получить статус:

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

status = rpc_status.from_call(rpc_error)
Я получаю следующее исключение:

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

AttributeError: 'RpcError' object has no attribute 'trailing_metadata'
Я даже не пытался добавить статус к этой RpcError, я следую тому, что было сделано в этом ответе.
Кто-нибудь сталкивался с этой проблемой?
Я пробовал так много вещей, но не могу найти способ заставить ее работать.
Я реализовал класс, который действует как заглушка, которая использует библиотеку grpcio-testing для вызова другого класса, который является реализованным мною сервисным классом. Затем издевался над заглушкой в ​​клиенте, но мне не удалось заставить ее вызывать исключение при использовании grpc.ServicerContext.abort_with_status().
Любая помощь приветствуется, если есть лучший способ проверить это, дайте мне знать.

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

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

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

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

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

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

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