与普通函数相比,Cypress 命令有何优势?

All*_*uan 1 cypress

众所周知,在 Cypress 中我们可以在文件中定义自定义命令commands.js,语法如下:

Cypress.Commands.add('login', (email, pw) => {})
Cypress.Commands.overwrite('visit', (orig, url, options) => {})
Run Code Online (Sandbox Code Playgroud)

然后,这些命令将在我们的所有测试中可用,并且可以从cy对象中使用。

cy.login('my@email.com', '123456')
cy.visit('www.stackoverflow.com', 'www.google.com', { redirect: true })
Run Code Online (Sandbox Code Playgroud)

但我不明白它的要点。当你可以编写一个常规函数时,这样做有什么意义呢?

function login(email, pw) { /* ... */ }

login('my@email.com', '123456')
Run Code Online (Sandbox Code Playgroud)

我看到的唯一优点是使该函数在任何地方都可用,而无需导出/导入它,但您也可以使用全局变量来做到这一点。是这样吗,还是我错过了什么?

Vai*_*ale 5

1. 不要把所有的东西都变成自定义命令
\n不要忘记,cypress 提供 API 用于覆盖现有命令,而不仅仅是创建新命令。\nJS 函数非常适合对 cy 命令进行分组,并且由于其简单性和可读性而更受欢迎。

\n

当您只是为了避免导出/导入而包装几个命令时,\xe2\x80\x99 没有理由添加这种级别的复杂性。

\n

2. 不要让事情过于复杂化。\n一个好的测试自动化框架应该是易于理解、可读和可维护的。尽量不要使事情过于复杂并创建太多抽象。如有疑问,请始终使用 JS 函数。

\n

在这里查看:https ://docs.cypress.io/api/cypress-api/custom-commands#Best-Practices

\n