包含许多断言的赛普拉斯测试的最佳实践

时间:2020-02-17 14:27:34

标签: javascript cypress qa

我正在用赛普拉斯编写自动化测试,但遇到了问题。让我们来看下面的例子:

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

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

  • 检查<table>元素,其列名及其顺序
  • 检查表过滤器/搜索,并确保它们都为空
  • 确保分页可用

因为所有这些测试都是观察性的,完全没有相互作用,所以它们不会相互作用/彼此干扰。 这意味着我可以编写一个it()测试来检查所有内容。但是,如果这样做,我的测试将非常庞大(例如100多个行)

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

有没有想过哪种方法更好?

  • 一项大测试,因为“同一页没有影响”
  • 进行较小的测试以提高可读性,但运行时间更长

2 个答案:

答案 0 :(得分:0)

因为所有这些测试都是观察性的,完全没有相互作用,所以它们不会相互作用/彼此干扰。这意味着我可以编写一个检查所有内容的it()测试。但是,如果这样做,我的测试将非常庞大(例如100多个行)

嗯,不完全是。

最佳实践是(如前所述)使测试易于阅读。将测试拆分(即使只是简单的断言),也可以根据testes部分将其分为单独的描述,描述甚至文件。测试更具可读性,结果也更加清晰。另外,每个测试都应该是独立的,不仅是在元素之间不相互干扰时。

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

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

我将制作一个describe,并在login()设置中使用before函数,并在每个部分使用成对的it,以使测试易于阅读。

答案 1 :(得分:0)

运行测试时,在报告中,您只会看到 description it 中的文本;以及它们是否通过。

如果您进行e2e测试,则可能会有100条以上的线;我品尝了400行。

最重要的是使它们易于阅读。