我承担了使用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");
任何反馈都很棒。
答案 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 ...
...
});
在Given
和When
部分中,可以使用t.expect(),但只能将其用作等待机制。
我也从来没有在.ok()
或.notOk()
中输入消息,因为当测试失败时,我总是必须手动进行测试以验证失败的原因。
因此,以BDD样式构建测试结构将帮助您从以下问题切换:how much assertions is too much?
到以下问题:how much tests is too much?