【问题标题】:Protactor: should I put assertions in my PageObject?量角器:我应该在我的页面对象中放置断言吗?
【发布时间】:2015-09-14 22:21:49
【问题描述】:

我有多个场景想要测试几乎相同的东西。

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

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

我的第一个任务是为我的 WidgetPO 添加一些可重用的方法 (testWidgetStillWorksX ~)

浏览主题后:http://martinfowler.com/bliki/PageObject.html 中所说的主题有一些优点和缺点

那么,您如何处理/将可重用测试放在哪里以及使用这两种方法时遇到的困难/优势是什么?

【问题讨论】:

    标签: angularjs testing protractor pageobjects e2e-testing


    【解决方案1】:

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

    困难-

    • 断言始终是测试用例/脚本的一部分。因此,最好将它们放在您编写的脚本中。
    • PageObject 中的断言会干扰代码的模块化和可重用性。
    • 难以在 pageobject 中编写/扩展一般功能。
    • 第三个人每次都需要从测试脚本转到您的页面对象以检查您的断言。

    优点 -

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

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

    【讨论】:

    • 感谢您的反馈,我知道这个问题没有明确的答案。只是想就此事获得不同的看法。 -- 最后,你会把重复测试放在哪里(比如测试一个小部件在不同场景下的工作?)我倾向于一个可重用的规范文件(规范包装在函数中并作为模块导出)
    • 您的重复测试将在 pageobject 文件下进行,但它们不应包含断言,因为这会给尝试使用这些功能的其他人带来问题。它们应该以通用的方式编写。
    猜你喜欢
    • 2017-03-25
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多