0

我们管理着一长串在多个市场运营的类似网站,其中很多都是配置驱动的,有时发布可能只会破坏某些域的内容。

所以我想建立一个由配置驱动的测试列表,以在发布之前检查我们所有的域都很好。

请参阅下面的基本示例,如果我们将其更改为 [beforeEach] 可以正常工作,但如果我们使用 [before] 则在第一组测试之后,cypress 只会不断重新加载并最终导航到域。

当我们使用 beforeEach 时一切正常,但很明显,当我们进行非交互式检查(例如检查页面内容)时,这要慢得多。

请告知推荐的循环多个域以执行相同测试的方法。

config.sites.forEach((site) => {
        describe('Testing SEO:' + site.url, function() {
            before(function() {
                cy.visit(site.url); 
            });

            it('Check there is only one h1 on the page on', function() {
                cy.get('h1').should('have.length', 1)
            });

            it('Checks the contents of an h1', function() {
                cy.get('h1').should('have.text', site.seo.h1)
            });
        });
});
4

1 回答 1

3

虽然您是正确的,cy.visit每次测试都比较慢,但这实际上是赛普拉斯推荐的编写测试的方式。

根据“最佳实践”文档,您不应该创建一堆只测试单个断言的测试。

赛普拉斯会告诉您哪个断言无论如何都失败了,因此将您的断言分成多个its 不会给您带来任何好处。

我建议这样做:

config.sites.forEach((site) => {
        describe('Testing SEO:' + site.url, function() {
            beforeEach(function() {
                cy.visit(site.url); 
            });

            it('Check all headers', function() {
                cy.get('h1').should('have.length', 1)
                cy.get('h1').should('have.text', site.seo.h1)
            });
        });
});
于 2019-06-20T16:01:27.273 回答