Cypress 是一个现代化的前端自动化测试框架,它具有易用、高效和可靠的特点。Cypress 4.0 版本于 2020 年 2 月 4 日发布,在该版本中,Cypress 引入了多项新特性,例如 TypeScript 支持、自定义命令别名、更好的错误信息、可重试的断言等。本文将介绍 Cypress 4.0 版本的特性与使用方法,帮助读者更好地了解和使用 Cypress 进行前端自动化测试。
TypeScript 支持
Cypress 4.0 版本引入了 TypeScript 支持,这使得 Cypress 的代码更加类型安全,可以在编码期间检查类型错误。要使用 TypeScript,需要安装 Cypress 的 TypeScript 定义文件:
npm install --save-dev @types/cypress
然后,添加 tsconfig.json
文件到项目根目录,指定 TypeScript 编译选项:
{ "compilerOptions": { "target": "es5", "lib": ["es5", "dom"], "types": ["cypress"] } }
在 Cypress 代码中,可以使用 TypeScript 的语法,例如:
describe('hello', () => { it('world', () => { cy.visit('/'); cy.contains('h1', 'Hello World'); }); });
自定义命令别名
Cypress 4.0 版本引入了自定义命令别名的功能,可以将一组命令打包成一个自定义命令,并使用别名调用。这使得测试代码更加简洁,易读性更高。例如,将一组访问登录页面、输入用户名密码、点击登录按钮的命令打包成一个命令别名 login
:
Cypress.Commands.add('login', (username: string, password: string) => { cy.visit('/login'); cy.get('[name=username]').type(username); cy.get('[name=password]').type(password); cy.get('button').click(); });
然后,在测试代码中可以使用 cy.login('john', 'passw0rd')
调用该命令别名,而不需要重复输入一组相同的命令。
更好的错误信息
在 4.0 版本中,Cypress 改进了错误信息的显示方式,使得异常信息更加直观和易于理解。当断言失败或出现异常时,Cypress 会在命令行界面显示错误信息,并提供哪个测试用例、哪个命令出现了问题。例如:
AssertionError: expected [] to have a length of 3, but got 0 at Object.eval (http://localhost:3000/__cypress/tests?p=tests/hello.spec.ts:5:30) at Hook.eval (http://localhost:3000/__cypress/runner/cypress_runner.js:101170:16) at Hook.Cypress.utils.tryCatchWrapper.eval (http://localhost:3000/__cypress/runner/cypress_runner.js:49945:19)
在错误信息中,可以看到断言失败的具体原因和位置,使得排查问题更加方便和迅速。
可重试的断言
在 Cypress 4.0 中,断言支持可重试的特性,如果断言失败,Cypress 会自动重试直到断言成功或超过最大重试次数。例如:
cy.get('#button').should('contain', 'Submit').should('be.visible');
在上面的例子中,should
方法带有两个断言,即应该包含文本 Submit
,并且应该可见。如果其中任何一个断言失败,Cypress 会自动重试该命令,直到达到最大重试次数或两个断言都成功为止。这使得测试代码更加健壮和不易受到网络波动等因素的影响。
示例代码
下面是一个使用 Cypress 进行自动化测试的示例代码:
-- -------------------- ---- ------- ----------------- -- -- - ------------- -- - -------------- --- ---------- ------ ----- ------ -- -- - ----------------- --------- --- ---------- ----- ---- ------- ------------- -- -- - ---------------- ------------ -------------------------- -------------- --- ---------- ---- ----- ------- ---- --------- ------------- -- -- - ---------------- ----------------- --------------------- ------ -------- -- ----------- --- --- ----------------------------- ---------- ------- --------- ------- -- - ------------------- ----------------------------------------- ----------------------------------------- ------------------------- ---展开代码
在这个示例中,对登录页面进行了三个测试用例的测试,分别是页面是否正确渲染、使用正确的用户名和密码登录是否成功跳转到了 dashboard 页面、使用错误的密码登录是否出现了错误提示。login
方法是一个自定义命令别名,将多个命令打包成一个命令别名,方便测试代码的复用。使用 TypeScript 语法,可以使得代码更加类型安全和易于维护。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d75395a941bf7134d330d9