Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中模拟grpc响应消息_Python_Unit Testing_Mocking_Python Mock_Grpc Python - Fatal编程技术网

在python中模拟grpc响应消息

在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)

最近,我一直在用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)
    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)