首页 > 解决方案 > 具有许多断言的赛普拉斯测试的最佳实践

问题描述

我正在用 Cypress 编写自动化测试,但遇到了一个问题。让我们看下面的例子:

要执行我的测试,我需要登录。请注意,身份验证过程然后显示页面大约需要 5-6 秒。

加载页面后,我想确保一些主要的 UI 元素存在并且处于正确的状态,例如:

因为所有这些测试都是简单的观察,完全没有交互,它们不会相互交互/干扰。这意味着我可以编写一个it()测试来检查所有内容。但是,如果我这样做,我的测试将是巨大的(比如 100 多行)

另一种方法是将这些测试拆分为更小的测试,以使它们更具可读性。但是,这意味着每次测试我都必须登录,这大大增加了执行测试所需的时间

关于哪种方法更好的想法?

标签: javascriptcypressqa

解决方案


因为所有这些测试都是简单的观察,完全没有交互,它们不会相互交互/干扰。这意味着我可以编写一个 it() 测试来检查所有内容。但是,如果我这样做,我的测试将是巨大的(比如 100 多行)

嗯,不完全是。

最佳做法是(如您所述)让您的测试易于阅读。根据 testes 部分,将您的测试拆分(即使它只是简单的断言)分成单独的其、描述甚至文件有很大帮助。测试更具可读性,结果也更清晰。此外,每个测试都应该是独立的,不仅是在元素不相互干扰的情况下。

要编写更少的代码行,您可以使用数组,例如用于表格元素:

const columns = ['name', 'surname', 'value1', 'value2'];
columns.forEach(function(column) {
  cy.contains('table', column).should('be.visible');

我会在设置中创建一个describe并使用login()函数,并为每个部分使用一对,以使测试易于阅读。beforeit


推荐阅读