NotImplementedError: ElasticNetworkInterfaces(AmazonVPC).describe_network_interface_attribute is not yet implemented
NotImplementedError: ElasticNetworkInterfaces(AmazonVPC).describe_network_interface_attribute is not yet implemented
如何在 test_elastic_network_interfaces_get_by_description 函数中描述 mock_ec2 的网络接口属性?
@mock_ec2 def test_elastic_network_interfaces_get_by_description():
ec2 = boto3.resource("ec2", region_name="us-east-1")
ec2_client= ec2.meta.client
vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16")
vpc.reload()
subnet = ec2.create_subnet(
VpcId=vpc.id, CidrBlock="10.0.0.0/24",
AvailabilityZone="us-east-1a")
desc = str(uuid4())
eni1 = ec2.create_network_interface(
SubnetId=subnet.id, PrivateIpAddress="10.0.10.5", Description=desc )
# The status of the new interface should be 'available'
waiter = ec2_client.get_waiter("network_interface_available")
waiter.wait(NetworkInterfaceIds=[eni1.id])
eni1.modify_attribute(SourceDestCheck={'Value': False})
eni1.reload()
response = eni1.describe_attribute(Attribute='description')
python 3.7
模拟 4.0.3
摩托 2.1.0
当然 2.0.0
aiobotocore 1.4.2
boto3 1.18.2
botocore 1.20.106
覆盖率 5.5
实施或修复 运行 或通过测试需要什么?
如果您询问如何在 Moto 中实现此功能,文档应该在这里提供帮助:http://docs.getmoto.org/en/latest/docs/contributing/new_feature.html
TLDR:
有一个脚本可以为新功能生成脚手架。
- 查看 Moto 源代码
- 安装项目(
make init
)
- 运行 脚手架脚本:
scripts/scaffold.py
总是可以在 Moto 中提出问题或创建草稿 PR - 如果您想做出贡献,他们很乐意提供帮助。
https://github.com/spulec/moto
如果在 moto 库的更新或脚手架脚本之后,该方法尚未在库中实现并继续出现这样的错误:
NotImplementedError:
ElasticNetworkInterfaces(AmazonVPC).describe_network_interface_attribute
is not yet implemented
一个简单的测试解决方案是一个 monkeypatch 函数,它可以模拟未实现的方法。
def client_mock(Attribute='description'):
return {
'Attachment': {
'AttachTime': 34545,
'DeleteOnTermination': False,
'DeviceIndex': 123,
'NetworkCardIndex': 123,
'InstanceId': 'eni1.instanceid',
},
'Description': {
'Value': 'Vpc network inteface'
},
'Groups': [
{
'GroupName': 'name group',
'GroupId': 'grupoid'
},
],
'NetworkInterfaceId': 'eni.id',
'SourceDestCheck': {
'Value': False
}
}
并将其与属性一起放在相应的函数或方法的传递上
monkeypatch.setattr(eni1, "describe_attribute", client_mock)
如果你知道更好的解决办法,请post吧!
如何在 test_elastic_network_interfaces_get_by_description 函数中描述 mock_ec2 的网络接口属性?
@mock_ec2 def test_elastic_network_interfaces_get_by_description():
ec2 = boto3.resource("ec2", region_name="us-east-1")
ec2_client= ec2.meta.client
vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16")
vpc.reload()
subnet = ec2.create_subnet(
VpcId=vpc.id, CidrBlock="10.0.0.0/24",
AvailabilityZone="us-east-1a")
desc = str(uuid4())
eni1 = ec2.create_network_interface(
SubnetId=subnet.id, PrivateIpAddress="10.0.10.5", Description=desc )
# The status of the new interface should be 'available'
waiter = ec2_client.get_waiter("network_interface_available")
waiter.wait(NetworkInterfaceIds=[eni1.id])
eni1.modify_attribute(SourceDestCheck={'Value': False})
eni1.reload()
response = eni1.describe_attribute(Attribute='description')
python 3.7
模拟 4.0.3
摩托 2.1.0
当然 2.0.0
aiobotocore 1.4.2
boto3 1.18.2
botocore 1.20.106
覆盖率 5.5
实施或修复 运行 或通过测试需要什么?
如果您询问如何在 Moto 中实现此功能,文档应该在这里提供帮助:http://docs.getmoto.org/en/latest/docs/contributing/new_feature.html
TLDR:
有一个脚本可以为新功能生成脚手架。
- 查看 Moto 源代码
- 安装项目(
make init
) - 运行 脚手架脚本:
scripts/scaffold.py
总是可以在 Moto 中提出问题或创建草稿 PR - 如果您想做出贡献,他们很乐意提供帮助。 https://github.com/spulec/moto
如果在 moto 库的更新或脚手架脚本之后,该方法尚未在库中实现并继续出现这样的错误:
NotImplementedError: ElasticNetworkInterfaces(AmazonVPC).describe_network_interface_attribute is not yet implemented
一个简单的测试解决方案是一个 monkeypatch 函数,它可以模拟未实现的方法。
def client_mock(Attribute='description'): return { 'Attachment': { 'AttachTime': 34545, 'DeleteOnTermination': False, 'DeviceIndex': 123, 'NetworkCardIndex': 123, 'InstanceId': 'eni1.instanceid', }, 'Description': { 'Value': 'Vpc network inteface' }, 'Groups': [ { 'GroupName': 'name group', 'GroupId': 'grupoid' }, ], 'NetworkInterfaceId': 'eni.id', 'SourceDestCheck': { 'Value': False } }
并将其与属性一起放在相应的函数或方法的传递上
monkeypatch.setattr(eni1, "describe_attribute", client_mock)
如果你知道更好的解决办法,请post吧!