目前,我们可以通过以下方式测试阳性案例:
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
fixtures看起来像下面这样:
@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 one这样的环境看起来很复杂,还没有准备好进行即插即用测试。
发布于 2018-01-18 17:05:02
grpc.ServicerContext
is just an interface;在您的测试代码中,您应该能够编写自己的实现,并将其传递给要测试的服务器。
诚然,目前我们没有在grpc_testing
中提供可供测试使用并传递给被测系统的grpc.ServicerContext
实现,但我们也不完全清楚我们是否可以提供一个简单实现且对大量测试有价值的实现。关于被测服务者如何使用grpc.ServicerContext
对象,有很大的行为空间,还有另一个很大的行为空间,关于作者如何编写服务者的测试。
https://stackoverflow.com/questions/48179371
复制相似问题