【问题标题】:Can I have multiple 'it' in one 'describe' and use a beforeEach我可以在一个“描述”中有多个“它”并使用 beforeEach
【发布时间】:2019-05-09 21:54:12
【问题描述】:

所以,我有一个 beforeEach 来加载我的网站。我主要在一个describe 函数和一个it 函数中编写我的测试。

我的 beforeEach 在 index.js>Support>Cypress 文件夹中

beforeEach(() => {
  cy.visit('http://localhost:3000/');
});

当前代码示例:

describe('this is a test',function(){
    it('will be a test example',function(){
        cy.contains('test').click
        cy.contains('another test').click()
    })
})

一位同事指出,只要每个部分都可以独立运行,我应该尝试将它们分解,以便更清楚地了解每个测试在做什么。我有几个可以独立运行的测试,但是,对于我写的每个it('test_name',function(),beforeEach 都会启动。

例如:我写了一个测试来打开一张卡片,点击一个状态,添加关于该状态的数据,然后关闭。如果我将每个部分分成它自己的it,那么它将在我的网站的“主页”页面上重新开始 beforeEach。

所需代码示例:

describe('this is a test',function(){
    it('will be a test example',function(){
        cy.contains('test').click
    })
    it('will test another test',function(){
        cy.contains('another test').click()
    })
})

有没有办法让这几个 it 函数继续上一个测试而不是让 beforeEach 生效?

提前谢谢你。

【问题讨论】:

    标签: cypress


    【解决方案1】:

    您可以使用beforeEach()before()。两者的行为略有不同。 before() 每个 describe() 仅适用一次 beforeEach()适用于describe()中的每个it()

    因此你必须做的: 将您只想在describe() 中执行一次的所有步骤放在before() 中。如果还有要在每个it() 执行的步骤,请将它们放在beforeEach() 中。

    请注意,您可以同时使用before()beforeEach()

    【讨论】:

    • 谢谢!这为我澄清了很多,以及我将如何编写未来的测试。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-05
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 2021-12-26
    相关资源
    最近更新 更多