文件应该存在无法识别文件路径

File Should Exist is not recognizing filepath

我正在使用 File Should Exist 关键字来检查列表中的现有文件。 这是高级格式:

Variables:
@{Files}    /Desktop/Other/scooby.txt
...         /Desktop/DummyFiles/daffy.txt
...         %{CURDIR}/mickey.txt

Test Case:
Given File Should Exist ${Files[0]} 
[...]

Output:
Setup failed:
Path '/Desktop/Other/scooby.txt' does not exist.

我不确定为什么会这样。文件名和文件路径正确。我还尝试了多种不同的组合(我将文件复制到此脚本 运行 所在的子目录,但这也不起作用)。我尝试将文件路径设为标量变量而不是 List/array。在文件路径前加“..”也不行。我研究过“Glob 模式”,但我认为这也不是问题所在。

如有疑问,请始终使用绝对路径。例如 - /Desktop/Other/scooby.txt 即使在 windows 上也不指向任何“有意义的”路径,因为它缺少驱动器。在 windows 上,使用 C:/Users/$yourlocalusername/Desktop/Other/scooby.txt 可能有效(用正确的值替换 $yourlocalusername)

依赖于相对路径(就像在你的例子中,即使你从 / 开始,前 2 个也是相对的,因为在 windows 中你仍然有一个 drive 开头)- 在 运行 你的套件 之前,你需要确保将工作目录设置为特定目录 。现在,如果您通过 IDE 运行 您的套件,在您熟悉相对和绝对路径的工作方式之前,当前工作目录可能不是您期望的那样 - 更喜欢使用绝对路径。请参阅 https://www.computerhope.com/issues/ch001708.htm - 也许这会解决您的问题。

您可以使用 ${CURDIR} 或不以“/”开头的相对路径。

我想当以 '/' 开头时,RF 不会将其作为相对路径输入并尝试从根目录映射地址,即 C:

在下面的示例中,我已经演示了这两种方法,对我来说效果很好。

*** Settings ***
Library   OperatingSystem
Documentation       Demonstrating File Exist keywords

*** Variables ***
@{Files}  Data/VariableData/ConditionalFlows.robot
...       Data/VariableData/testdata.robot

@{Files2}  ${CURDIR}/Data/VariableData/ConditionalFlows.robot
...       ${CURDIR}/Data/VariableData/testdata.robot
*** Test Cases ***
TS002-Check For File Existence
    [Documentation]  File exists
    ${File}  File Should Exist  ${Files}[0]
    ${File}  File Should Exist  ${Files2}[0]