基本上,我想在执行所有测试之前登录一次。我的测试文件分为几个文件。
我应该使用before hook在每个测试文件中调用我的login命令,还是有办法在所有测试之前执行一次?
简短的回答:你可以在before
(supportFile
)的the file that is loaded automatically before your other spec files钩子中写下你的登录命令。这个before
钩子将在你的其他测试文件中的任何代码之前运行。
建议:话虽如此,这种方法对于您将来可能需要的各个测试文件的变化几乎没有灵活性,例如:
onBeforeLoad
做一次怎么办?我建议只在每个单独的spec文件中的before
钩子中使用login命令。
我还建议你在beforeEach
的avoid sharing any state in between tests钩子中输入你的登录命令。
我会在EACH测试之前登录,因为在先前的测试中可能会发生影响当前测试结果的事情。通过全新登录,您每次都会以干净的状态开始。如果您想测试不相关操作的“链”(操作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