在python中模拟grpc响应消息
最近,我一直在用MagicMock()在python中模拟gRPC调用,但我没有成功地模拟得到的gRPC响应消息。这是一段代码 python客户端代码在python中模拟grpc响应消息,python,unit-testing,mocking,python-mock,grpc-python,Python,Unit Testing,Mocking,Python Mock,Grpc Python,最近,我一直在用MagicMock()在python中模拟gRPC调用,但我没有成功地模拟得到的gRPC响应消息。这是一段代码 python客户端代码 def senor_read(self, server_end_point) with grpc.insecure_channel(server_end_point) as grpc_channel: grpc_stub = sensorservice_pb2_grpc.getsensorinfostub(grpc_channel)
def senor_read(self, server_end_point)
with grpc.insecure_channel(server_end_point) as grpc_channel:
grpc_stub = sensorservice_pb2_grpc.getsensorinfostub(grpc_channel)
sensor_response = yield grpc_stub.getsensorreading(sensorservice_pb2_grpc.request(
sensorname=name, account=account))
if sensor_response.ok:
print(" Successful sensor reading")
elf sensor_resonse.error:
raise Sensor_ErrorReading(why="Not able to read sensor)
return convert_resoonse_to_dict(sensor_response)
以下是我模仿它的方式(仍然是初学者学习模仿框架)
Flow is python函数senor_read()向远程服务器发出gRPC请求,获取读数并传递回调用方
此测试的目的是使代码在“eif”情况下执行并捕获异常。
1) 当我执行测试代码时,如果case和我看到一些其他异常被发送给调用方,它不会转到“elf”。gRPC响应模拟中的状态设置是否正确
2) 我的模拟步骤是否适用于模拟gRPC呼叫
3) 此外,当我运行时,我无法看到成功时的打印消息,而只能看到失败时的打印测试用例。另外,实际功能中的打印是否未打印
我搜索了很多,找不到太多关于在python中模拟gRPC的信息。func可以被分解成更多的函数,进行验证测试更容易,但进行真正的单元测试和模拟太复杂了。使用一个真正的gRPC服务器,并在测试中提供您想要的响应如何?像这样的回答:
sensorservice_pb2_grpc = MagicMock()
sensorservice_pb2_grpc.getsensorinfostub = MagicMock()
mock_grpc_stub = MagicMock()
mock_grpc_channel = MagicMock()
mock_grpc_channel.grpc.insecure_channel = MagicMock()
mock_grpc_channel.grpc_channel = MagicMock()
mock_grpc_response = MagicMock(mock_grpc_stub.getsensorreading)
type(mock_grpc_response.return_value).error = PropertyMock(return_value=True)