我正在使用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
这是一个简化版本," it"内可能会发生很多事情。起初我以为我应该将单个测试分成多个案例,但后来我必须登录并返回到页面(我认为这是额外的时间,我不需要浪费在我的自动化测试中 - 同意?)。
尽管如此,我还想记录我正在做的事情,以便它显示在Browserstack Automate logging选项卡中。目前,其中有哪些与硒操作或屏幕截图有关。我想有一些自定义日志记录。原因是当我的测试失败时,我目前得到一个堆栈跟踪 - 行号(这很好)以及失败的测试。由于我的测试包含许多功能(因为我不想让rspec一遍又一遍地登录)如果测试失败并且有人正在查看Browserstack以查看失败的地方,那么很难知道逻辑失败的地方一些额外的自定义日志如何进行自定义日志记录,以便在browsestack中查看文本? (或者我是否完全错了,即使重新登录问题,我也应该将我的测试分成小块?)
答案 0 :(得分:1)
我可以给你的建议是:
1 :.每个测试应该是单个用例场景。如果失败了,你知道为什么
2 :.如果您需要执行许多步骤来实现用例场景,那么您应该将元素抽象为表示页面(https://code.google.com/p/selenium/wiki/PageObjects)的类,并且可能更进一步并添加抽象多个页面操作的流程。因此,如果在验证之前的某个步骤中失败,您将知道它失败了哪个元素/页面,并知道出了什么问题。
3 :.如果您在使用BrowserStack日志记录和屏幕截图时仍然无法理解测试中出现的问题,那么您的问题不是缺少日志记录,而是您的测试编写方式
答案 1 :(得分:0)
首先,我同意在每个场景/示例的开头登录会浪费时间并且肯定是多余的。有关在每个测试之间保持cookie会话的信息,请参阅this question。同时阅读这种方法的优点/缺点。
您的测试需要正确编码。这意味着每行代码都应与用户执行的手动执行步骤对齐。这应该可以让您轻松跟踪和重现发生的任何故障。
测试可能在任何地方都会失败,并且在您可以想到的每个地方构建自定义消息传递/异常处理都是过多的开销。首先编写可靠的确定性测试更有用,然后稍后缩小(应该是少量的)失败。
可以可能做的是将每个场景/示例包装在异常块中,并在发生故障时拍摄屏幕截图。这比在整个套件中添加自定义错误消息要少得多。
答案 2 :(得分:0)
您可以尝试通过在Selenium测试中执行以下JavaScript,在BrowserStack的Automate仪表板上生成的日志中创建自己的自定义消息:
(例如,在Ruby中)
driver.execute_script("\" <Write your custom log here> \";")