2016-11-24 45 views
1

我試圖測試以下方法:GRPC的Python:無法實例抽象類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對象?如果我不能,我該如何測試該方法?

回答

1

grpc.ServicerContext是用abc module定義的抽象類。在你的測試中,你需要編寫你自己的具體子類,並將它的一個實例傳遞給你正在測試的方法。