我如何在赛普拉斯的所有测试套件之前执行代码?
How can I execute code before all tests suite with Cypress?
基本上,我想在执行所有文件中的所有测试之前登录一次。
我应该使用 before 挂钩在每个测试文件中调用我的登录命令,还是有任何方法可以在所有测试之前执行一次?
简短回答: 您可以在 supportFile
(the file that is loaded automatically before your other spec files) 中的 before
挂钩中编写登录命令。此 before
挂钩将 运行 在您其他测试文件中的任何代码之前。
建议: 话虽这么说,这种方法对您将来可能需要的个人测试文件的变化几乎没有灵活性,例如:
- 如果您想为一次测试以不同的方式为数据库设置种子怎么办?
- 如果您想以具有不同权限的不同用户身份登录怎么办?
- 如果您需要在
onBeforeLoad
中执行一次怎么办?
我建议在每个单独的规范文件的 before
挂钩中只包含登录命令。
我还 进一步 建议将您的登录命令放在 beforeEach
挂钩中 avoid sharing any state in between tests。
我会在每次测试之前登录,因为之前的测试中可能会发生影响当前测试结果的事情。通过全新登录,您每次都从一个干净的状态开始。如果您想测试 "chain" 不相关的操作(操作 A 然后操作 B),请将其编写为单独的测试,但在单独的测试中具有基本功能。
describe('/page'), () => {
beforeEach(() => {
cy.login() // custom command that hanldes login w/o UI
cy.visit('/page') // go to the page you are testing
})
// tests
})
您应该在每个测试文件中包含一个 beforeEach 块。此块应登录并导航到相关页面。
describe('Hooks', function() {
before(function() {
// runs once before all tests in the block
})
})
https://docs.cypress.io/guides/core-concepts/writing-and-organizing-tests.html#Hooks
正如其他人已经建议的那样,我会将要执行的函数包装在 before 块中。
现在,查看 docs, I would make that happen in the cypress/support/index.js
file.
基本上,我想在执行所有文件中的所有测试之前登录一次。
我应该使用 before 挂钩在每个测试文件中调用我的登录命令,还是有任何方法可以在所有测试之前执行一次?
简短回答: 您可以在 supportFile
(the file that is loaded automatically before your other spec files) 中的 before
挂钩中编写登录命令。此 before
挂钩将 运行 在您其他测试文件中的任何代码之前。
建议: 话虽这么说,这种方法对您将来可能需要的个人测试文件的变化几乎没有灵活性,例如:
- 如果您想为一次测试以不同的方式为数据库设置种子怎么办?
- 如果您想以具有不同权限的不同用户身份登录怎么办?
- 如果您需要在
onBeforeLoad
中执行一次怎么办?
我建议在每个单独的规范文件的 before
挂钩中只包含登录命令。
我还 进一步 建议将您的登录命令放在 beforeEach
挂钩中 avoid sharing any state in between tests。
我会在每次测试之前登录,因为之前的测试中可能会发生影响当前测试结果的事情。通过全新登录,您每次都从一个干净的状态开始。如果您想测试 "chain" 不相关的操作(操作 A 然后操作 B),请将其编写为单独的测试,但在单独的测试中具有基本功能。
describe('/page'), () => {
beforeEach(() => {
cy.login() // custom command that hanldes login w/o UI
cy.visit('/page') // go to the page you are testing
})
// tests
})
您应该在每个测试文件中包含一个 beforeEach 块。此块应登录并导航到相关页面。
describe('Hooks', function() {
before(function() {
// runs once before all tests in the block
})
})
https://docs.cypress.io/guides/core-concepts/writing-and-organizing-tests.html#Hooks
正如其他人已经建议的那样,我会将要执行的函数包装在 before 块中。
现在,查看 docs, I would make that happen in the cypress/support/index.js
file.