本文介绍了如何用Python编写GRPC服务器的单元测试?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想使用Python unittest
为我的GRPC服务器实现编写测试.我找到了 grpcio-testing 程序包,但找不到任何文档来使用它.
I would like to use Python unittest
to write tests for my GRPC server implementation. I have found grpcio-testing package but I could not find any documentation how to use this.
假设我有以下服务器:
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
的单元测试并检查响应?
How do I create an unit test to call SayHello
and check the response?
推荐答案
您可以在setUp时启动真实的服务器,在tearDown时停止服务器.
You can start a real server When setUp and stop the server when 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编写GRPC服务器的单元测试?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!