小编Ham*_*abi的帖子

在 Python 中使用 Mock 来实现嵌套对象(DynamoDB 和表)

我想使用来自 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
Run Code Online (Sandbox Code Playgroud)

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

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)
Run Code Online (Sandbox Code Playgroud)

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

python mocking python-unittest

5
推荐指数
1
解决办法
8737
查看次数

标签 统计

mocking ×1

python ×1

python-unittest ×1