-2
私は以下の関数を持っています。私はテストを書いています。文を含むコードのPythonユニットテスト
def _find_latest_backup(self):
"""
Find the latest backup in S3 bucket
"""
aem_instance_type = self.instance_of
if aem_instance_type == 'standby':
aem_instance_type = 'author'
with S3Bucket(name=self.s3_bucket) as bucket:
objects = bucket.objects.filter(
Prefix=self.s3_folder + "/aem_" + aem_instance_type,
)
print objects
try:
return max(objects, key=attrgetter('last_modified')).Object()
except ValueError:
self.logger.info("No backups found in %s/aem_%s", self.s3_folder, aem_instance_type)
私のunittestのは
@pytest.mark.parametrize('s3_obj_summaries,latest_key', [
(
[
MockS3ObjectSummary(
key='aem-cpp-dev-01/backup1',
last_modified=datetime(2017, 1, 10, 15, 0)
),
MockS3ObjectSummary(
key='aem-cpp-dev-01/backup2',
last_modified=datetime(2017, 2, 11, 15, 0)
),
MockS3ObjectSummary(
key='aem-cpp-dev-01/backup3',
last_modified=datetime(2017, 3, 12, 15, 0)
),
MockS3ObjectSummary(
key='aem-cpp-dev-01/backup4',
last_modified=datetime(2017, 4, 12, 15, 0)
),
],
"aem-cpp-dev-01/backup4"
),
])
def test_find_latest_backup(self, mocker, s3_obj_summaries, latest_key):
""" Test getting the latest backup file """
bucket = mocker.patch('aem_management.restore.S3Bucket')
bucket.__enter__.objects.filter.return_value = True
restore_manager = blank_restore_manager()
assert restore_manager._find_latest_backup().key == latest_key
は、しかし、私はRETURN_VALUEの正しい値を得ることはありません、このようになります。私が見ている出力は、これは私が声明を含むコードのテストを書いていると私は、この作品を作るために別の何かをする必要があるん初めてです
with mocker.patch('aem_management.restore.S3Bucket', return_value=mock_bucket) as bucket:
restore_manager = blank_restore_manager()
> assert restore_manager._find_latest_backup().key == latest_key
E AttributeError: 'NoneType' object has no attribute 'key'
のですか?
多くのおかげで、