GRPC。测试环境

GRPC. Testing Context

目前我们可以通过以下方式测试阳性病例:

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 服务程序方法更改为以下内容:

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

我们因错误而失败,与虚拟上下文相关。

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

this 这样的上下文看起来很复杂,还没有准备好进行即插即用测试。

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

目前我们确实没有在 grpc_testing 中提供一个 grpc.ServicerContext 实现以供测试使用并传递给被测系统,但我们也不完全清楚可以提供一个可以简单实施并且对大量测试也有价值的方法。关于被测服务程序如何使用 grpc.ServicerContext 对象的大量行为 space 以及作者如何编写服务程序测试的另一大型行为 space。