简体中文 | English
关于 Cypress 的具体介绍及使用方法,请参考官方文档
这里主要给出编写 Skyline-console 前端页面中,资源对应的 E2E 用例,并使用test/e2e/support
中定义的函数的说明
以下介绍,以云主机用例test/e2e/integration/pages/compute/instance.spec.js
为例
一般,测试资源的相应功能时,是按照以下顺序
-
准备测试使用的相关变量
- 创建资源时的必须参数,如:名称、密码
- 编辑资源时的必须参数,如:新的名称
- 创建关联资源时,关联资源的名称,如:网络名称、路由器名称、云硬盘名称
const uuid = Cypress._.random(0, 1e6); const name = `e2e-instance-${uuid}`; const newname = `${name}-1`; const password = 'passW0rd_1'; const volumeName = `e2e-instance-attach-volume-${uuid}`; const networkName = `e2e-network-for-instance-${uuid}`; const routerName = `e2e-router-for-instance-${uuid}`;
-
操作前登录
- 如果是操作控制台资源,使用
cy.login
- 如果是操作管理平台资源,使用
cy.loginAdmin
- 一般会在
login
与loginAdmin
函数中使用变量listUrl
,即登录后直接访问资源所在页面
beforeEach(() => { cy.login(listUrl); });
- 如果是操作控制台资源,使用
-
创建关联资源,使用
resource-commands.js
中提供的创建资源的函数,以测试云主机为例-
创建网络,用于测试创建云主机、挂载网卡
cy.createNetwork({ name: networkName });
-
创建路由器
cy.createRouter
,用于测试关联浮动 IP 时确保浮动 IP 可达- 以如下方式创建的路由器将开启外网网关,并绑定了
networkName
网络的子网
cy.createRouter({ name: routerName, network: networkName });
- 以如下方式创建的路由器将开启外网网关,并绑定了
-
创建浮动 IP
cy.createFip
,用于测试关联浮动 IPcy.createFip();
-
创建云硬盘
cy.createVolume
(用于测试挂载云硬盘)cy.createVolume(volumeName);
-
-
编写创建资源的用例
-
编写访问资源详情的用例
-
分别编写资源的所有操作对应的用例
- 一般
编辑
操作的用例写在后面,其后编写删除
操作的用例,这样能测试到编辑是否生效
- 一般
-
删除关联资源,使用
resource-commands.js
中提供的删除资源的函数,这是为了测试用例执行后,测试账号内的资源尽可能的干净-
删除浮动 IP
cy.deleteAll('fip');
-
删除路由器
routerName
cy.deleteRouter(routerName, networkName);
-
删除网络
networkName
cy.deleteAll('network', networkName);
-
删除云硬盘
volumeName
cy.deleteAll('volume', volumeName);
-
删除所有可用状态的云硬盘
cy.deleteAllAvailableVolume();
-
上述步骤中的4
、5
、6
主要使用了
test/e2e/support/form-commands.js
中的函数操作表单,详细介绍见3-1-E2E-form-operationtest/e2e/support/table-commands.js
中的函数,操作表格中的按钮点击、搜索、进入详情,详细介绍见3-2-E2E-table-operationtest/e2e/support/detail-commands.js
中的函数,操作返回列表页、检测详情内容、切换详情 Tab,详细介绍见3-3-E2E-detail-operation
创建、删除关联资源主要使用了test/e2e/support/resource-commands.js
中的函数,,详细介绍见3-4-E2E-resource-operation