在Python中模拟在函数内部调用的生成器的输出

2024-05-13 07:52:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我们正在Python中的Azure持久函数中对Orchestrator进行单元测试,我们希望在下面的函数中断言由context.call_activity("GetRecords", reader_activity_input)创建的记录被传递给context.call_activity("ProcessRecords", records),但是尽管在测试中模拟了返回值,它仍然返回一个None,而不是由mocked_context.call_activity.return_value = iter(records)设置的值

功能:

 def orchestrator_function(context: df.DurableOrchestrationContext):
        .....
        records = yield context.call_activity("GetRecords", reader_activity_input)
        response = yield context.call_activity("ProcessRecords", records)
        return response

测试:

  def test_Orchestrator_function_calls_Process(mocker):
        mocked_context = mocker.MagicMock()
        records = [1,2,3]
        mocked_context.call_activity.return_value = iter(records)
        list(generator)
        mocked_context.call_activity.assert_has_calls([mocker.call("ProcessRecords", records)]) 

上述断言失败,因为records的值为None


Tags: 函数noneinputreturncontext断言activitycall