gRPC Python: 无法实例化抽象 class ServicerContext

gRPC Python: Can't instantiate abstract class ServicerContext

我正在尝试测试以下方法:

def my_method(self, request, context):
    context.set_details('Already exists')
    context.set_code(grpc.StatusCode.ALREADY_EXISTS)

为了测试它,我必须传入一个请求和一个上下文(它是一个 grpc.ServicerContext 对象),如下所示:

import grcp

def test_my_method(self):
    request = {"something": "something-else"}
    context = grpc.ServicerContext()

    my_method(request, context)

    # Assert something here

问题是,当我 运行 我的测试时出现以下错误:

TypeError: Can't instantiate abstract class ServicerContext with abstract methods add_callback, cancel, invocation_metadata, is_active, peer, send_initial_metadata, set_code, set_details, set_trailing_metadata, time_remaining

如何获得 grpc.ServicerContext 对象?如果我不能,我该如何测试该方法?

grpc.ServicerContext 是用 abc module 定义的抽象 class。在您的测试中,您需要编写自己的具体子 class 并将其实例传递给您正在测试的方法。