用例编写原则:
1、【要求】每个动作要有校验
2、【要求】每个用例执行完要对资源进行回收,所有用例执行完要回到执行前状态
3、【要求】每个用例要有通用性,可以在不同资源池上跑
4、【要求】新增普通用例都打上network_all标签,如果用例涉及重启服务或物理机打上network_restart_service标签,用来方便区分开源用例
5、【建议】每个用例用装饰skip_cleanups_decorator装饰方便异常时保留资源进行问题定位分析
用例归档位置:
git: /ctg-network-neutron/tempest.git
目录位置:tempest\api\network\ 在该目录下可以新建文件,也可以在已有文件中增加用例,可参考test_tob_normal.py文件
用例执行方法:
参考个人构建方法。
用例举例:
def test_tob_nat_vm_ping_001(self):
"""test_tob_nat_vm_ping_001"""
# Create a network
network = self.create_network()
LOG.info("====>network=%s",network)
self.addCleanup(test_utils.call_and_ignore_notfound_exc,
self.networks_client.delete_network, network['id'])
net_id = network['id']
self.assertEqual('ACTIVE', network['status'])
# Create a subnet
subnet = self.create_subnet(network)
subnet_id = subnet['id']
LOG.info("====>subnet=%s", subnet)
# Create a router
router_name = data_utils.rand_name(self.__class__.__name__ + '-router')
router = self.create_router(router_name, distributed=True, admin_state_up=True, enable_snat=False,
external_network_id=CONF.network.public_network_id)
LOG.info("====>router=%s", router)
self.addCleanup(self.delete_tob_router, router)
self.assertEqual(router['name'], router_name)
# Add router interface with subnet id
body = self.routers_client.add_router_interface(
router['id'], subnet_id=subnet_id)
LOG.info("====>interface=%s", body)
self.addCleanup(self._remove_router_interface_with_subnet_id,
router['id'], subnet_id)
...
用例打标签:
方法1:
@decorators.attr(type='network_smoke')
def test_test1(self):
self._compute_hosts()
标签名:network_smoke
测试方法:stestr run network_smoke 这样可以执行某一类标签用例。
方法2:
@decorators.attr(type=['network_smoke', 'network_all'])
def test_test1(self):
self._compute_hosts()
pass
@decorators.attr(type=['network_all'])
def test_test2(self):
self._compute_hosts()
pass
打多个标签,通过标签,可以选择用例
公共API
在物理机上执行命令行,返回命令执行结果
_execute_host_cmd(cls, hostip, username, password, cmd, timeout=2):
在cirros虚机上执行命令行,返回命令执行结果
_execute_cirros_cmd(cls, hostip, username, password, instance, vm_user, vm_psw, cmd, timeout=2)
在cirros虚机上ping外网,返回是否ping通
_cirros_vm_ping(self, hostip, username, password, instance, vm_user, vm_psw, desip):
通过hostname获取管理网的IP
_host2ip(cls, host)
获取所有的普通计算节点hostname
_compute_hosts(cls):
获取所有的高性能计算节点hostname
_hp_compute_hosts(cls):
获取所有的普通网络节点hostname
_network_hosts(cls):
获取所有的高性能网络节点hostname
_hp_network_hosts(cls):