Robot Framework - 使用相对路径从不同的目录变体运行测试

chm*_*mcc 8 testing automated-tests relative-path filepath robotframework

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

robotframework
|_foo
 |_tests folder
 |_pages folder
 |_firefoxTestProfile folder
 |_...
Run Code Online (Sandbox Code Playgroud)

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

*** Variables ***
${FF_PROFILE}    foo\firefoxTestProfile
*** Keywords ***
Open browser window
    Open Browser    ${test_url}    ${browser}   
... ff_profile_dir=${FF_PROFILE}
Run Code Online (Sandbox Code Playgroud)

当我从顶层目录运行我的测试时,它运行良好:

C:/robotframework$  pybot foo/tests/test.txt
Run Code Online (Sandbox Code Playgroud)

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

C:/robotframework/foo$  pybot tests/test.txt
Run Code Online (Sandbox Code Playgroud)

说测试失败了

"The system cannot find the path specified: foo/firefoxTestProfile/*.*"
Run Code Online (Sandbox Code Playgroud)

我尝试了各种各样的东西,比如把路径当作

../foo/firefoxTestProfile
/foo/firefoxTestProfile
firefoxTestProfile
Run Code Online (Sandbox Code Playgroud)

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

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

Uri*_*and 17

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

这里最有趣的是$ {CURDIR}

从文档:

${CURDIR}   An absolute path to the directory where the test data file is located.  This variable is case-sensitive.
Run Code Online (Sandbox Code Playgroud)

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

在根测试文件夹中创建一个文件__init.robot.

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

Set Global Variable  ${testsRootFolder}  ${CURDIR}
Set Global Variable  ${pagesRootFolder}  %{CURDIR}${/}..${/}_pages
Set Global Variable  ${firefoxProfileFolder}  %{CURDIR}${/}..${/}firefoxTestProfile
Run Code Online (Sandbox Code Playgroud)