在功能测试中只有一个断言声明?

时间:2017-05-01 02:10:49

标签: selenium functional-testing assertions

这个问题类似于this one,但是关于功能测试而不是单元测试。

我目前正在使用Selenium测试用户界面,我想知道是否只需要一个断言声明,或者它是否依赖于测试。

例如,如果我想测试一个基本的Facebook登录,只需对最终案例使用断言语句就足够了(例如:找到一个仅在登录时才存在的元素)或者测试应该更详细并包含更多一个断言声明(检查您是否在正确的站点上,检查输入,检查登录时仅存在的元素等)。

2 个答案:

答案 0 :(得分:1)

让我试着逐一回答你的问题:

  1. if only one assertion statement is needed, or if it depends on the test - 让我们谈一下手册Testcase。测试用例包含几个步骤,但最后我们会根据预期结果交叉检查实际结果。通过断言在Automation中实现了相同的意识形态。理想情况下,根据最佳实践,断言声明是必须的,但它不是强制性的。

  2. should the test be more detailed and include more than one assertion statement - 您可以在Testcase中始终拥有多个断言。没问题。但是你必须记住,如果一个断言失败,其余的断言将不会被执行。这会给你一个结果通过或失败。现在,如果你想保留多个验证点,那么你必须得到if / else阻止的帮助,这样你的所有验证都会被执行,而不管它们是否通过。

  3. 如果这回答了你的问题,请告诉我。

答案 1 :(得分:0)

每个测试用例规则的一个断言在功能测试中位于顶部。对于功能性的端到端测试,我认为作为一般指导,它应该只测试一种行为。使用尽可能多的断言来验证这一行为。

如果测试失败,您希望在不阅读实际测试代码的情况下了解不起作用的内容。在单个测试中具有多个断言可能导致测试多个行为和多个失败原因。这是次优的。

确实实用,因为端到端的功能往往很慢。乘以相同的步骤来测试稍微不同的断言似乎浪费了运行时间。如果您想在每次办理登机手续时运行测试套件,那么您的测试套件也应该很快。因此,不要在这个级别上写太多测试。 test-pyramid建议保持良好的平衡。

对于你的例子,我认为一个断言就足够了。行为是检查用户现在是否已登录,而不是页面上是否所有元素都已登录。另请注意,如果网站的实施发生变化,您需要更新所有测试。你声称你的测试可以维护得越少,就越少。