我正在用赛普拉斯编写自动化测试,但遇到了问题。让我们来看下面的例子:
要执行测试,我需要登录。 请注意,身份验证过程然后显示页面大约需要5-6秒。
加载页面后,我想确保一些主要的UI元素都处于正确的状态,例如:
<table>
元素,其列名及其顺序因为所有这些测试都是观察性的,完全没有相互作用,所以它们不会相互作用/彼此干扰。 这意味着我可以编写一个it()
测试来检查所有内容。但是,如果这样做,我的测试将非常庞大(例如100多个行)
另一种方法是将这些测试分成较小的测试,以使其更具可读性。但是,这意味着我必须为每个测试登录,这大大增加了执行测试所需的时间
有没有想过哪种方法更好?
答案 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行。
最重要的是使它们易于阅读。