使用 Selenium 和 SerenityBDD (thucydides) 处理异常和错误的最佳实践

Best practice on exception and error handling with Selenium and SerenityBDD (thucydides)

实际上我正在编写一堆测试,但我不确定我应该如何最好地处理 exceptions/errors。

有不同类型的异常,例如AssertException 如果使用 assertThat(..) 结果不符合预期。这是O.K。并且可以理解。

但是如果我有一个 FileNotFound / SOAPException / DOMException 等等...?

例如,在我的 @BeforeStory 方法中,我通过读取测试文件并将它们发送到网络服务来创建一些测试数据,在那里我可能会遇到上述异常。我想通过在实时文档中也使用自己的错误消息来显示这些错误。但是我应该如何管理呢?实际上我在考虑两种方法:

1.) 我捕获异常并抛出我自己的新异常和一条单独的错误消息。该场景的测试执行被中止,异常情况出现在实时文档中。

2.) 我捕获了异常,实现了一个带有错误消息的基于字符串的 return 语句,并在我的低级规范中使用了 assertThat(...) 所以我应该只得到 AssertException最后。

3.) ..?

问题: 以及如何使用 selenium/serenity 处理异常或错误的建议或常见最佳实践?

首先,有一个很好的主题信息来源——xUnit test patterns本书。

回答您的问题,好的方法是使用 2 个主要错误组。第一个是 AssertionException,表示被测应用程序存在问题(错误)。第二个是所有其他异常,表明测试代码本身、测试执行环境或应用程序环境存在问题,但在应用程序中没有。以这种方式构建测试将帮助您快速发现和消除问题。

所以一般来说,您的第一个选择是正确的。当发生异常时,收集一些额外的数据(例如 application/execution env)也是一个好主意。