使用 Robot Framework 的执行级别设置和拆卸
Posted
技术标签:
【中文标题】使用 Robot Framework 的执行级别设置和拆卸【英文标题】:Execution Level Setup & Teardown with Robot Framework 【发布时间】:2019-08-08 13:20:55 【问题描述】:我知道Test Setup
将在每个测试用例之前执行,Suite Setup
将在每个套件(即每个 .robot 文件)之前执行。
但是,一旦我运行 robot
命令并且当所有测试套件都运行后,运行 Teardown,我就会尝试执行命令级别的 Setup 和 Teardown。
尝试在我的场景目录中包含 __init__.robot
文件,但它们根本没有被调用。
*** Settings ***
Resource ../_common/keywords.robot
Suite Setup Prepare Browser
Suite Teardown Close Browser
我希望能够在任何测试开始之前启动浏览器,然后仅在所有测试完成后关闭浏览器。
例如,robot 1.robot 2.robot
应该:
-
打开浏览器
运行
1.robot
测试套件
运行2.robot
测试套件
关闭浏览器
【问题讨论】:
【参考方案1】:您可以为此设置“特殊”套件,并在运行中首先调用它们并最后调用它们。由于 SeleniumLibrary 具有全局范围,在第一个中初始化的浏览器应该可以在同一运行中被所有后续套件访问。
例如套件“Startup.robot”将打开浏览器,“Closing.robot”将关闭它,任何中间人都将使用它:
robot Startup.robot 1.robot 2.robot Closing.robot
当您传递一个执行目录时,框架会按字母顺序获取其中的 .robot 文件,因此您可以将这些特殊套件命名为“0000_Startup.robot”和“zzzz_Closing.robot”,以便它们在相应的环境中运行顺序(如果你只使用 ascii/latin 文件名)。
是的,初始化文件不用于在其他套件之前运行某些东西 - 它们在那里为其他套件设置默认值,可以在下游覆盖。 See their description in the documentation.
【讨论】:
原本希望有一种更集成的方式,但我想它不被支持,因为我在文档中找不到类似的东西,而初始化文件是我能找到的最接近的东西。 我自己做的是使用自定义关键字来打开和关闭浏览器,将其视为单例 - 如果存在则不要重新创建,除非有特殊情况,否则不要真正关闭它。但这比您在此处介绍的案例涉及的解决方案要多得多——简单的命名方案更容易实现。 应该注意的是,这只有在与浏览器的连接没有故障时才有效。发生这种情况时,应该打开一个新的浏览器。 @TodorMinakov 这很有意义。我想这个答案旨在直接回答我的问题。谢谢。以上是关于使用 Robot Framework 的执行级别设置和拆卸的主要内容,如果未能解决你的问题,请参考以下文章
Robot Framework字符串判断,if语句多执行条件,多执行语句
Robot Framework - 从带有参数的其他 *.robot 脚本调用 *.robot 脚本