0

我正在使用 rspec 和 capybara 在 ruby​​ 中构建一组自动化回归测试。为了让您了解测试,想象一下登录到网站,添加一个包含所有字段的新数据项,保存它,验证新行,更新行,更改字段,然后更新/验证它。

例如:

describe "auto regression test #1", :type => :feature, js: true do
  it  "should add and update my data" do
    # login
    # go to page
    # press new button
    # fill in fields
    # etc.
  end
end

这是一个简化版本,“它”中可能会发生很多事情。起初我在想我应该将单个测试分成多个案例,但随后我必须登录并返回页面(我认为这是额外的时间,我不需要浪费在我的自动化测试中 - 同意?)。

尽管如此,我想记录我正在做的事情,以便它显示在 Browserstack Automate logging 选项卡中。目前那里的内容与硒操作或屏幕截图有关。我想要一些自定义日志记录。原因是当我的测试失败时,我目前会得到一个堆栈跟踪 - 行号(这很好)以及失败的测试。由于我的测试包含许多功能(因为我不希望 rspec 一遍又一遍地登录)如果测试失败并且有人正在查看 Browserstack 以查看失败的位置,因此很难知道逻辑失败的位置没有一些额外的自定义日志记录。如何放入自定义日志记录以便我可以在浏览器堆栈中看到文本?(或者我这一切都错了,我真的应该把我的测试分成小块,即使有重新登录的问题)?

4

3 回答 3

1

我能给你的建议是:

1:。每个测试都应该是一个用例场景。如果它失败了你知道为什么

2:。如果您需要执行许多步骤来实现用例场景,那么您应该将元素抽象为代表页面的类(https://code.google.com/p/selenium/wiki/PageObjects),并且可能更进一步并添加抽象多个页面操作的流程。因此,如果它在验证之前的某个步骤中失败,您将知道它失败的元素/页面并知道出了什么问题。

3:。如果即使使用 BrowserStack 日志记录和屏幕截图,您仍然无法理解测试中出了什么问题,那么您的问题不在于缺少日志记录,而且是您的测试编写方式

于 2015-06-05T11:20:37.527 回答
0

首先,我同意在每个场景/示例开始时登录会浪费时间,而且绝对是多余的。请参阅此问题以在每次测试之间保持 cookie 会话。还要阅读这种方法的优缺点。

您的测试需要正确编码。这意味着每一行代码都应该与用户将执行的手动执行的步骤保持一致。这应该使您可以轻松地跟踪和重现发生的任何故障。

测试在任何地方都可能完全失败,并且在你能想到的每个地方都构建自定义消息/异常处理的开销太大。首先编写可靠的、确定性的测试,然后再缩小(应该是很少的)失败的范围会更有用。

可以做的是将每个场景/示例包装在一个异常块中,并在发生故障时截取屏幕截图。这比在整个套件中添加自定义错误消息的开销要少得多。

于 2015-06-04T13:31:44.533 回答
0

您可以通过在 Selenium 测试中执行以下 JavaScript 来尝试在 BrowserStack 的 Automate 仪表板上生成的日志中创建自己的自定义消息:

(例如,在 Ruby 中)

driver.execute_script("\" <Write your custom log here> \";")

于 2015-07-02T09:29:13.477 回答