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

时间:2016-11-24 13:22:03

标签: python testing grpc

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

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个对象?如果我不能,我该如何测试该方法?

1 个答案:

答案 0 :(得分:1)

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