在Python中将Mock用于嵌套对象(DynamoDB和Table)

我想使用DynamoDb的不同输入来测试函数的行为。主要有两种行为:在表中找到搜索键的时间以及何时未找到搜索键。这是该函数的最少代码:


import boto3

from boto3.dynamodb.conditions import Key


def main(symbol):

   dynamo = boto3.resource("dynamodb")

   table = dynamo.Table("mytable")

   data = table.query(KeyConditionExpression=Key("symbol").eq(symbol))


   if data.count > 0:

      # result = some_output

   else:

      result = {'status': '404'}

   return result

我想通过发送空结果和非空项目列表来进行单元测试来测试此代码,如下所示:


import boto3

import unittest

from unittest.mock import Mock, patch


class TestMainHandler(unittest.TestCase): 

   ...

   def test_main_fails_on_wrong_symbol(self):

       with patch.object(main_handler, 'table') as get_mock:

          get_mock.return_value = []

          result = main('dummy_symbol')

          expect_result = {'status': '404'}

   self.assertEqual(result, expect_result)

但我无法运行模拟部分。我想知道您是否可以指导我如何模拟嵌套表和发电机变量。非常感谢您的帮助。


尚方宝剑之说
浏览 152回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python