[英]Robot Framework custom keyword only in Test Setup
Robot Framework是否有可能只允许在“测试设置”部分(或“测试拆解”)中执行自定义关键字 ? 假设我有一个名为“ My Setup
的关键字。 如果在正常步骤(即不在“测试设置”中)执行“ My Setup
,则测试应失败。 关于用户关键字和浏览StackOverflow的RF文档并没有给我任何有意义的结果。
例如, Run keyword if all tests passed
,则Robot Framework内置函数Run keyword if all tests passed
的文档指出“尝试在其他任何地方使用它会导致错误”,因此我想知道应该采用某种方式将此方法应用于自定义关键字。
我试图通过在开始执行测试之前分析测试文件并检查是否出现“测试设置”中未出现的“ My Setup
来解决此问题。 但是,这感觉很麻烦,因此我正在寻找如下内容:
def MySetup(self, some_arg):
if MAGIC.not_inside_test_setup():
raise AssertionError('"My Setup" can be executed only in Test Setup')
我在同事的帮助下设法解决了这个问题。 解决方案如下:
假设在名为My Library
定义了My Setup
关键字。
start_keyword
的侦听器方法执行自定义关键字“ My Setup
。 该方法包含有关该关键字是作为常规关键字还是作为Test Setup / Teardown关键字执行的信息。 My Setup
以not-test-setup关键字运行,则应在侦听器中通过“ My Library
实例设置“ My Library
内部的全局错误标志。 My Setup
”开始时,检查“ My Library
的全局错误标志是否已设置; 如果设置,则会引发错误。 MyLibrary.py
SETUP_ERROR = None
class MyLibrary(object):
def MySetup(self, some_arg):
global SETUP_ERROR
if SETUP_ERROR:
raise AssertionError(SETUP_ERROR)
# Otherwise continue with the setup
def _SetError(self, error):
global SETUP_ERROR
SETUP_ERROR = error
Listener.py
from MyLibrary import MyLibrary
class MyListener(object):
# ...
def start_keyword(self, name, attributes):
if name == 'MyLibrary.My Setup' and attributes['type'] != 'Setup':
MyLibrary()._SetError('"My Setup" can be executed only in Test Setup')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.