机器人框架 - 使用相对路径运行来自不同目录变体的测试

时间:2015-10-14 23:49:03

标签: testing automated-tests relative-path filepath robotframework

我遇到了Robot Framework测试套件的问题。我有一个简单的测试结构:

robotframework
|_foo
 |_tests folder
 |_pages folder
 |_firefoxTestProfile folder
 |_...

我设置了一个简单的Firefox配置文件路径来运行我的测试,并设置了这样的变量:

*** Variables ***
${FF_PROFILE}    foo\firefoxTestProfile
*** Keywords ***
Open browser window
    Open Browser    ${test_url}    ${browser}   
... ff_profile_dir=${FF_PROFILE}

当我从顶层目录运行我的测试时,运行正常:

C:/robotframework$  pybot foo/tests/test.txt

但是,如果我尝试从foo目录运行它,如下所示:

C:/robotframework/foo$  pybot tests/test.txt

测试失败,说明

"The system cannot find the path specified: foo/firefoxTestProfile/*.*"

我尝试了各种各样的事情,例如将路径设为

../foo/firefoxTestProfile
/foo/firefoxTestProfile
firefoxTestProfile

以及将firefoxTestProfile文件夹移动到文件结构中的不同路径并更新到该新路径,但这些都不起作用并显示与以前相同的错误消息。

这也很重要,因为我希望默认的firefox配置文件与测试一起运行,并且这些测试在不同的人之间传递,以便在他们的机器上本地运行它们。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:16)

有几个内置变量可以帮助您正确定义路径。

这里最有趣的是$ {CURDIR}

来自文档:

${CURDIR}   An absolute path to the directory where the test data file is located.  This variable is case-sensitive.

我通常定义一个主套件安装文件(在你的情况下,在根测试文件夹中),在那里,我将定义以下3个全局级变量

在root tests文件夹中创建一个文件__init.robot。

在它中创建一个套件设置部分(在任何测试之前运行 - 但只运行一次!)

Set Global Variable  ${testsRootFolder}  ${CURDIR}
Set Global Variable  ${pagesRootFolder}  %{CURDIR}${/}..${/}_pages
Set Global Variable  ${firefoxProfileFolder}  %{CURDIR}${/}..${/}firefoxTestProfile

答案 1 :(得分:1)

你可以使用这样的相对路径:

..${/}..${/}foo${/}firefoxTestProfile

你应该提一下firefoxTestProfile'的相对路径。从运行测试的文件。

答案 2 :(得分:1)

不幸的是,Selenium遇到了麻烦 - 至少在Windows上 - 有非规范路径。 ${/}..${/}证明是有问题的,Selenium使用这样的字符串进行文件引用失败。

解决方法是使用String库和${CURDIR}

${UpperDir} ${Leaf} Split String From Right ${CURDIR}   ${/}    1