量角器:我应该在我的页面对象中放置断言吗?

Protactor: should I put assertions in my PageObject?

我有多个场景,我想在其中测试几乎相同的东西。

我正在测试后台并且我有小部件(例如自动完成搜索)。我想确保小部件没有损坏,因为:

  1. 我刚刚浏览了一个文章页面
  2. 我保存了文章的一部分,重新​​加载了页面
  3. 1+2 然后我玩了一些可能有副作用的其他小部件
  4. ...

我的第一个挑战是向我的 WidgetPO 添加一些可重用的方法 (testWidgetStillWorksX ~)

浏览主题后:如 http://martinfowler.com/bliki/PageObject.html

中所述,该主题有一些优点和缺点

那么,您如何处理/将可重复使用的测试放在哪里?difficulties/advantages 您使用这两种方法时遇到的问题是什么?

您的问题过于宽泛,无法回答。使用 PageObject 模型编写测试的最佳方法是从 PageObject 文件中排除断言。简而言之,这里有一个小解释 -

困难-

  • 断言始终是测试的一部分 case/script。所以最好把它们放在你写的脚本里。
  • PageObject 中的断言扰乱了代码的模块化和可重用性。
  • 页面对象中的 writing/extending 通用函数有困难。
  • 第三方每次都需要从测试脚本转到您的页面对象来检查您的断言。

优势 -

  • 您始终可以添加 methods/functions 在您的 pageObject 中执行重复性任务,该对象执行一些操作(例如等待元素加载、获取元素的文本等...),而不是断言和 returns一个值。
  • 从您的测试中调用 PageObject 的函数,并使用它们的返回值在您的测试中执行断言。
  • 测试脚本中的断言易于阅读和理解,无需担心页面对象的实现。

Here's a good article of pageobjects。希望这有帮助。