基本上,我想在执行所有测试之前登录一次。我的测试文件分为几个文件。
我是否应该使用before hook在每个测试文件中调用我的login命令,或者在所有测试之前有没有办法做一次?
答案 0 :(得分:11)
简答:您可以在before
(the file that is loaded automatically before your other spec files)内的supportFile
挂钩中编写登录命令。此before
挂钩将在其他测试文件中的任何代码之前运行。
建议:话虽如此,这种方法对于您将来可能需要的各个测试文件的变化几乎没有灵活性,例如:
onBeforeLoad
执行一次操作会怎么样?我建议只在每个单独的spec文件的before
挂钩中使用login命令。
我还进一步建议您使用beforeEach
挂钩avoid sharing any state in between tests登录您的登录命令。
答案 1 :(得分:-1)
我会在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块。该块应该登录并导航到相关页面。
答案 2 :(得分:-2)
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