python - 在 RobotFramework 中注册自定义变量查找器的合法方式?
问题描述
RobotFramework 是否有合法的方式来注册我自己的变量查找器?例如,我想注册 finder 来解析名称以 . 开头的变量#
。有了robotframework==3.1
这样的代码,我就可以做到这一点:
import robot
from robot.variables.finders import VariableFinder
class MyVariableResolver:
identifiers = '$'
def find(self, name):
if name[2] == '#':
return f'My resolution for {name}'
else:
raise KeyError(name)
VariableFinder._finders = property(
lambda self: (MyVariableResolver(),) + self.__dict__['_finders'],
lambda self, value: self.__dict__.setdefault('_finders', value)
)
class MyLibrary:
pass
我robotframework==4.0
的解决方案被打破了,我不得不改为MyVariableResolver
:
from robot.variables.finders import NOT_FOUND
# other imports
class MyVariableResolver:
identifiers = '$'
def find(self, name):
if name[2] == '#':
return f'My resolution for {name}'
else:
return NOT_FOUND
但是这段代码看起来仍然非常难看(尤其是VariableFinder._finders = property(...
)。有没有“正确”的方式来做我想做的事?
解决方案
推荐阅读
- android - 如何使用视图绑定制作 BaseFragment
- azure - 在 Docker 容器中运行 Azure PowerShell 脚本
- java - 暴露的 java ee rest 端点上的 M2M 身份验证
- swiftui - 如何将地图添加到 iOS 14 小部件?
- python-3.x - 如何在 Python 中将 enumerate() 转换为 for 循环
- python - 如何通过嵌入层进行反向传播?
- powershell - 从域控制器到客户端的 Powershell 远程处理
- r - 拟合 Weibull 函数和参数估计
- c# - C# 替换双引号内的文本
- c - 你如何证明一个简单的无意义的代码是否可计算?