我的应用程序中有一个函数可以给我以下响应:
{
'ResponseMetadata': {
'RequestId': 'e7bfcf5f-707e-4526-8b43-077bfa01e9ed',
'HTTPStatusCode': 200,
'HTTPHeaders': {
'date': 'Wed, 12 Jun 2019 05:46:37 GMT',
},
},
'IsTruncated': False,
'Marker': 'foo1',
'Buckets': [
{
'Name': 'foo2',
'CreationDate': datetime.datetime(2019, 6, 11, 15, 7, 10, 200000, tzinfo=tzutc()),
'Location': 'r1'
}, {
'Name': 'foo3',
'CreationDate': datetime.datetime(2019, 6, 11, 15, 7, 10, 381000, tzinfo=tzutc()),
'Location': 'r1'
}
]
}
我想检查响应中的Location
= r1
。
我已经尝试过了,但是不起作用:
for i in len(resp['Buckets']):
assert(resp['Buckets'][len(i)]['Location'] == 'r1')
我也尝试过for i in range(resp['Buckets'])
,但收到此错误:
TypeError: 'list' object cannot be interpreted as an integer
我在做什么错,我该如何解决?
答案 0 :(得分:1)
您应该查看this answer来了解Python for
循环与while
循环的不同之处以及它的实际工作方式。
关于代码,您需要遍历resp['Buckets']
而不是len(..)
:
for bucket in resp['Buckets']:
assert bucket['Location'] == 'r1'
据我了解,您正在尝试检查所有存储桶是否具有值为location
的{{1}}键。另一种方法是使用r1
方法:
all