我想设置一个很好的方式来捕捉截图,当我们的一些机器人框架前端测试失败。当然,我可以补充:
Run Keyword If Test Failed Capture Page Screenshot
为了测试Teardown
,但考虑到我有大量复杂的测试套件,有数百个测试和一个嵌套结构,我需要将其添加到如此多的拆分中,这在我看来很难看。在
我做了一点实验。我认为未来的方法是使用listener
。所以我试了一下:
它捕获了屏幕截图,但在日志中看不到图片。我可以在测试消息中显示它,在捕获后添加以下步骤:
BuiltIn().set_test_message("*HTML* {} <br/> <img src={}>".format(result.message, screenshot_name))
但这并不是最好的。在
然后我尝试了另一种方法来处理Visitor
接口(与--prerunmodifier一起使用):
from robot.api import SuiteVisitor
class CaptureScreenshot(SuiteVisitor):
def end_test(self, test):
if test.status == 'FAIL':
test.keywords.create('Capture Page Screenshot', type='teardown')
但是它用新的测试替换现有的测试Teardown
(只有一个关键字“Capture Page Screenshot”)。我以为我可以通过添加Capture
关键字来修改现有的Teardowns
,但我没有
有什么好的,干净的,Python式的方法吗?我错过什么了吗?在
我把所有的东西都包在一个try/除了测试块中。这样,在任何时候,如果测试失败,屏幕截图在except块中,我会在/…之前/之后得到一个屏幕快照。在
最后,它以库侦听器结束,如下所示。我不得不同意Bryan的观点:代码不短也不漂亮,但它实现了预期的目标-在套件中定义了截图捕捉的单点。 作为一个很大的优势,我看到了捕捉失败设置的屏幕截图的可能性-在某些情况下,它可以帮助我们识别可能的基础设施问题。 请注意带有
ActionChains
的部分-它在浏览器中缩小。我们的前端应用程序使用部分页面滚动,通过这种缩放,我们可以看到更多的内容,这对我们非常有帮助。每个浏览器的操作链的结果不同,所以这是真正的解决方法。在欢迎发表任何意见。在
相关问题 更多 >
编程相关推荐