使用 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)也是一个好主意。
实际上我正在编写一堆测试,但我不确定我应该如何最好地处理 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)也是一个好主意。