我有一些设置类型的全局变量,我希望能够从Python代码访问。例如:
pybot --variable RESULTS_PATH:/wherever/this/points test.txt
现在,我的模块logger.py
文件需要知道要正确设置的results_path。
我知道我可以用变量初始化记录器,比如
***Settings***
Library logger ${RESULTS_PATH}
然后在记录器中我将传递results_path:
def __init__(self, results_path):
# Whatever
然而,对我来说这样做的问题是我想从Python代码和测试用例中访问和使用记录器。因此,如果我以这种方式设置它,如果我想使用Python代码中的记录器,我遇到了需要results_path正确初始化记录器的相同问题。
机器人框架库中是否有任何函数可以让我从Python代码中获取$ {RESULTS_PATH}的值?做这样的事情的正确方法是什么?
目前,我解决此问题的方法是将RESULTS_PATH设置为环境变量。所以我有类似的东西:
运行如:
RESULTS_PATH=/wherever/this/points pybot test.txt
test.txt
:***Settings***
Library logger
...
logger.py
:results_path = os.environ["RESULTS_PATH"]
# Other set up stuff
答案 0 :(得分:18)
您需要使用rf的BuiltIn
库,for reference read the documentation as found here。这提供了内置于Robot Framework中的关键字,因此应该可靠地保持可用:
from robot.libraries.BuiltIn import BuiltIn
results_path = BuiltIn().get_variable_value("${RESULTS_PATH}")