Pra*_*esh 5 python unit-testing mocking boto3
我想使用单元测试来测试batch_write方法。
class DataService:
def __init__(self, table):
dynamodb = boto3.resource('dynamodb', region_name='us-west-2')
self.db = dynamodb.Table(self.table)
def batch_write(self, items):
with self.db.batch_writer() as batch:
for item in items:
batch.put_item(Item=item)
Run Code Online (Sandbox Code Playgroud)
我想模拟batch_writer()。我已经看到使用 mock_open 来模拟文件打开方法。但我真的不明白我可以模拟这个流式batch_writer() 调用吗?
我也遇到了这个问题,这就是我解决它的方法。
from mock import MagicMock
class TestClass():
def __enter__(self, *args):
return self
def __exit__(self, *args):
pass
cls = TestClass()
cls.put_item = MagicMock()
repository.table.batch_writer = MagicMock()
repository.table.batch_writer.return_value = cls
print cls.put_item.call_args_list
Run Code Online (Sandbox Code Playgroud)
现在我可以通过我的模拟测试类代替batch_writer来模拟调用或检查参数。我知道这是一个老问题,但我一直在努力解决这个问题,并希望有人能发布一个代码示例(如果这很容易做到)。如果有更好更简单的方法使用任何人都有的补丁,请发布。