Я использую метод 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'
Кто-нибудь сталкивался с этой проблемой?
Я пробовал так много вещей, но не могу найти способ заставить ее работать.
Я реализовал класс, который действует как заглушка, которая использует библиотеку grpcio-testing для вызова другого класса, который является реализованным мною сервисным классом. Затем издевался над заглушкой в клиенте, но мне не удалось заставить ее вызывать исключение при использовании grpc.ServicerContext.abort_with_status().
Любая помощь приветствуется, если есть лучший способ проверить это, дайте мне знать.
Подробнее здесь: https://stackoverflow.com/questions/790 ... -in-python