Python GRPC。测试上下文

Python GRPC。测试上下文,python,testing,pytest,grpc,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):

目前,我们能够通过以下方式检测阳性病例:

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.fixture(scope="session")
def server():
    return AuthServer()


@pytest.fixture(scope="session")
def context():
    return DummyGRPCTestContext()
使用
pytest
夹具,如下所示:

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.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 SERVISER方法更改为以下方法:

def register(self, request, context):
    context.set_code(grpc.StatusCode.ALREADY_EXISTS)
    context.set_details("User already exists")
    return auth_messages.registerResponse()
我们在与虚拟上下文相关的错误中失败

在哪里我们可以得到grpc上下文,可以很容易地插入到测试环境中

像one这样的上下文看起来很复杂,还没有准备好进行插入和测试

;在您的测试代码中,您应该能够编写自己的实现,并将其传递给您的测试服务程序

诚然,目前我们没有在
grpc_testing
a
grpc.ServicerContext
中提供可供测试使用并传递给测试系统的实现,但我们是否可以提供一个简单实现且对大量测试有价值的实现也不完全清楚。受测服务人员如何使用
grpc.ServicerContext
对象有很大的行为空间,作者如何编写服务人员测试也有很大的行为空间;在您的测试代码中,您应该能够编写自己的实现,并将其传递给您的测试服务程序


诚然,目前我们没有在
grpc_testing
a
grpc.ServicerContext
中提供可供测试使用并传递给测试系统的实现,但我们是否可以提供一个简单实现且对大量测试有价值的实现也不完全清楚。受测服务商如何使用
grpc.ServicerContext
对象有很大的行为空间,作者如何编写服务商测试也有很大的行为空间。

有可能用最少的测试代码获得一个样本回购?TarunLalwani,好主意。可以,但不是现在。可以用最少的测试代码复制问题来获得样本回购吗?@TarunLalwani,好主意。可以,但现在不行。谢谢您的回复。是的,我以模拟我们在业务逻辑中使用的部分上下文的想法结束。在测试过程中,我们可以有几个上下文。另外,已经准备好使用的上下文-将无助于测试拦截器之类的东西-所以我们有几个“集成”测试,它们有完整的grpc服务器,所有服务都在夹具中。不幸的是,无法将其作为答案分享,可能稍后将创建微框架。感谢您的回复。是的,我以模拟我们在业务逻辑中使用的部分上下文的想法结束。在测试过程中,我们可以有几个上下文。另外,已经准备好使用的上下文-将无助于测试拦截器之类的东西-所以我们有几个“集成”测试,它们有完整的grpc服务器,所有服务都在夹具中。不幸的是,无法将其作为答案共享,可能以后会创建微框架。