CyPress 是在 mocha 式 API 基础上构建的一套开箱可用的测试框架,对比其他测试框架,它提供一套自己的最佳实践方案,无需其他测试工具库,配置方便简单但功能异常强大,可以使用 webpack 项目配置,还提供了一个强大的 GUI 图形工具。所以作为经常使用 JavaScript 开发语言的人,会非常容易入门这个自动化测试框架。
下面已运营后台登录为例,进行实战操作。
describe('测试登录', function () {
before(() => console.log('---- Test Start! ----'));
beforeEach(() => cy.visit('https://xxxxxx.com'));
// 先不清除不然脚本有bug
// afterEach(() => cy.clearCookies());
it('登录不输入账号和密码', function () {
cy.get('.ant-btn').click();
//断言
cy.get('.ant-form-explain').should('contain', '请输入密码');
cy.get('.ant-form-explain').should('contain', '请输入正确的手机号码');
});
it('输入账号,不输入密码', function () {
cy.get('#phone').type('159xxxxxx');
cy.get('.ant-btn').click();
//断言
cy.get('.ant-form-explain').should('contain', '请输入密码');
});
it('不输入账号,输入密码', function () {
cy.get('#password').type('11111111');
cy.get('.ant-btn').click();
//断言
cy.get('.ant-form-explain').should('contain', '请输入正确的手机号码');
});
it('login 账号和密码失败', function () {
cy.get('#phone').type('159xxxxxx');
cy.get('#password', { timeout: 3000 }).type('1111111');
cy.get('.ant-btn', { timeout: 1000 }).click();
// bug 需要点击两次
cy.get('.ant-btn').click();
//断言
cy.get('.ant-message-notice-content').should('contain', '密码错误,请尝试忘记密码');
});
it('login 成功', function () {
cy.get('#phone').type('159xxxxxx');
cy.get('#password').type('11111111');
cy.get('.ant-btn').click();
// bug 需要点击两次
cy.get('.ant-btn').click();
//断言
cy.get('.ant-tabs-tab-active', { timeout: 4000 }).should('contain', '个人信息');
});
});
视频上传不了,先这样了。
大多数测试工具(如 Selenium)通过在浏览器外部运行并在网络上执行远程命令来运行。Cypress 恰恰相反,Cypress 在与你的应用程序相同的生命周期里执行。Cypress 背后是 Node 服务进程。Cypress 和 Node 进程不断进行通信,同步和执行任务。访问这两个部分(前端和后端)使我们能够实时响应你的 web 应用程序的事件,与此同时也能完成需要更高权限的任务。在以上工程实际来说,cypress 比一般的 UI 自动化运行速度快。比较贴合前端项目的技术栈。可以在项目执行过程中推行研发和 QA 共创脚本。共同维护。