python - 如何用 Python 为 GRPC 服务器编写单元测试?

标签 python grpc

我想使用 Python unittest 为我的 GRPC 服务器实现编写测试。我找到了 grpcio-testing包,但我找不到任何如何使用它的文档。

假设我有以下 server :

import helloworld_pb2
import helloworld_pb2_grpc


class Greeter(helloworld_pb2_grpc.GreeterServicer):    
    def SayHello(self, request, context):
        return helloworld_pb2.HelloReply(message='Hello, %s!' % request.name)

如何创建单元测试来调用 SayHello 并检查响应?

最佳答案

您可以在 setUp 时启动真实服务器,在 tearDown 时停止服务器。

import unittest
from concurrent import futures


class RPCGreeterServerTest(unittest.TestCase):
    server_class = Greeter
    port = 50051

    def setUp(self):
        self.server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))

        helloworld_pb2_grpc.add_GreeterServicer_to_server(self.server_class(), self.server)
        self.server.add_insecure_port(f'[::]:{self.port}')
        self.server.start()

    def tearDown(self):
        self.server.stop(None)

    def test_server(self):
        with grpc.insecure_channel(f'localhost:{self.port}') as channel:
            stub = helloworld_pb2_grpc.GreeterStub(channel)
            response = stub.SayHello(helloworld_pb2.HelloRequest(name='Jack'))
        self.assertEqual(response.message, 'Hello, Jack!')

关于python - 如何用 Python 为 GRPC 服务器编写单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51792592/

相关文章:

python - 需要帮助用计数器将 else 放入 while

python - 使用 openpyxl 可以实现更精确的图像放置吗? (像素坐标而不是单元坐标?)

python - 如何返回 n 对括号的所有有效组合?

asp.net-core - Google 语音流 api 的 Grpc 代理服务器没有响应 ( Grpc.Core.RpcException )

c# - 我真的需要整个 Grpc.Core NuGet 包才能在简单的 C# 应用程序中使用 Google PubSub

gradle - 带有 Gradle 的 RSocket RPC (Windows) 二进制文件(Bluild 失败)

python - 如何在 python 中将 RGBA 图像转换为灰度图像?

pythonic 模块组织 - 如何引用根目录中的文件?

c# - Protobuf-net.Grpc服务合约继承

c++ - 使用 vcpkg 编译 gRPC C++ 示例