import asyncio
import pytest
region_id = cfg.CONF.region_id
zone_id = cfg.CONF.zone_id
class TestParamRunInstances(TestBase):
@retry_with_error_code(retry_num=1, always_retry=True, error_codes=['InvalidSecurityGroupId.NotFound'])
async def test_param(self):
"""
使用合法和非法入参测试 RunInstances
"""
async def clean_callback(api_resp):
"""
清理测试创建类 API 产生的资源
"""
instance = Instance(
region_id=region_id,
instance_id=api_resp['InstanceIdSets']['InstanceIdSet'][0]
)
# 初始化状态下实例,不允许删除,得等一会 防止:InvalidInstanceId.NotFound
await asyncio.sleep(60)
await instance.delete(_retry=True, wait=True)
v_switch, sg_normal, sg_enterprise, instance_type, image_id = await get_run_instance_kwargs()
await self._test_api(
api_=Resource(region_id=region_id, zone_id=zone_id).api_RunInstances,
clean_callback_=clean_callback,
image_id=ParamSchema(
valid_values=[image_id],
invalid_values=[None, 'Invalid'],
error_codes=['MissingParameter', 'InvalidImageId.NotFound']
),
instance_type=ParamSchema(
valid_values=[instance_type],
invalid_values=[None, 'Invalid'],
error_codes=['MissingParameter', 'InvalidInstanceType.ValueNotSupported']
),
v_switch_id=ParamSchema(
valid_values=[v_switch.v_switch_id]
),
security_group_id=ParamSchema(
valid_values=[sg_normal.security_group_id, sg_enterprise.security_group_id],
invalid_values=['sg-test', None],
error_codes=['InvalidSecurityGroupId.NotFound', 'InvalidSecurityGroupId']
),
instance_name=ParamSchema(
valid_values=['As', 'a' * 128, '实例:-12'],
invalid_values=['a', '_as', 'a' * 129, 'http://', 'https://'],
error_codes='InvalidInstanceName.Malformed'
),
description=ParamSchema(
valid_values=['As', 'a' * 256, '实例'],
invalid_values=['a', 'a' * 257, 'http://', 'https://'],
error_codes='InvalidDescription.Malformed'
),
tag__1__key=ParamSchema(
valid_values=['key', 'a' * 128],
invalid_values=['a' * 129, 'aliyun', 'acs:', 'http://', 'https://'],
error_codes='InvalidTagKey.Malformed'
),
tag__1__value=ParamSchema(
valid_values=['value', 'a' * 128],
# 测试instance无效值,云未做校验
invalid_values=['a' * 129, 'http://', 'https://'],
# invalid_values=['a' * 129, 'acs:', 'http://', 'https://'],
error_codes='InvalidTagValue.Malformed'
)
)
自动化测试用例,测试边界值范围(asyncio + pytest)
最新推荐文章于 2024-05-14 09:50:21 发布