自动化测试中的断言有多少?

时间:2019-02-16 16:23:48

标签: javascript automated-tests e2e-testing testcafe

我承担了使用testcafe构建测试服的任务,在编写测试时,我偶然发现了一个特定的问题:“多少断言太多?”。 基本上,在完成测试后,将生成报告。查看报告并不直观。例如, 如果在网页上找不到元素,则会显示类似以下内容:

>Selector('tads') does not exist in the DOM. 

这迫使我手动进行测试以验证失败的原因。

根据testcafe文档,您可以向断言添加可选消息。 as seen here

截至目前,我在几个地方都声明了一些消息。每次单击或每次操作后都声明(带有简洁的错误消息)是否明智? (即单击登录按钮,进行断言以查看是否出现登录模式。现在登录,断言该登录模式已消失)

代码看起来像这样:

await t.click(this.loginButton);
await t.expect(this.loginButton.exists).ok("I don’t see the login button");

await signup.newUserSignUp();
await t.expect(this.loginButton.exists).notOk("The login modal didn’t disappear"); 

任何反馈都很棒。

1 个答案:

答案 0 :(得分:6)

TestCafe断言既可以用于断言测试中期望的结果,也可以用作等待机制,以确保在对元素进行操作之前元素已准备就绪。

这意味着您可能在一个测试中得到许多断言。

我个人使用BDD样式编写每个测试,如下所示:

fixture("Feature <feature-id>: description of the feature ");

test("Scenario <scenario-id>: description of the scenario", async (t) => {
  // Given 
  await t
   .<any action>
   .<any action>
   ...

  // When
  await t
   .<any action>

  // Then
  await t
   .expect ... 
   .expect ...
   ...

});

GivenWhen部分中,可以使用t.expect(),但只能将其用作等待机制。

我也从来没有在.ok().notOk()中输入消息,因为当测试失败时,我总是必须手动进行测试以验证失败的原因。

因此,以BDD样式构建测试结构将帮助您从以下问题切换:how much assertions is too much?到以下问题:how much tests is too much?