自动化测试用例,测试边界值范围(asyncio + pytest)

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'
            )
        )
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值