GRPC。测试环境

时间:2018-01-10 02:20:40

标签: python testing pytest grpc

目前我们能够按照以下方式测试阳性病例:

class AuthServer(auth_grpc.AuthServicer):
    def __init__(self, *args, **kwargs):
        print("Initializing auth server..")
        super(AuthServer, self).__init__(*args, **kwargs)

    def register(self, request, context):
        return auth_messages.registerResponse(uuid="Test")

pytest灯具看起来如下:

@pytest.fixture(scope="session")
def server():
    return AuthServer()


@pytest.fixture(scope="session")
def context():
    return DummyGRPCTestContext()

在以下方式访问的测试用例环境中:

def test_user_registration(server, context, user):
    request = auth_messages.registerRequest(**user)
    result = server.register(request, context)
    print("RESULT %s " % result)

但是,如果我们想要测试否定案例并将grpc servicer方法更改为以下内容:

def register(self, request, context):
    context.set_code(grpc.StatusCode.ALREADY_EXISTS)
    context.set_details("User already exists")
    return auth_messages.registerResponse()

我们失败了与虚拟上下文相关的错误。

在哪里可以获得grpc上下文,可以轻松插入测试环境?

this这样的上下文看起来很复杂,还没有为插件和测试做好准备。

1 个答案:

答案 0 :(得分:1)

grpc.ServicerContext is just an interface;在您的测试代码中,您应该能够编写自己的实现,并将其传递给您正在测试的服务商。

确实,目前我们没有在Before: _!__ After: grpc_testing实施中提供准备好被测试使用并传递给被测系统的实现,但它已经#39}我们还不完全清楚,我们可以提供一个简单实施的,也对大量测试有价值的。测试中的服务人员如何使用grpc.ServicerContext个对象,以及作者如何编写服务人员测试的另一个大行为空间。