如何在运行时获取和设置Robot Framework(Ride)中的默认输出目录

Kar*_*ick 2 robotframework

我想将所有输出文件移动到自定义位置,移动到基于运行时日期时间创建的运行目录.datetime的输出文件夹在TestSetup中创建

我有函数"Process_Output_files",它将文件移动到Run文件夹(Run1,Run2,Run3文件夹).

我尝试使用参数-d并使用函数"Process_Output_files"作为套件拆除将输出文件移动到相应的Run目录.

但是我收到以下错误"进程无法访问该文件,因为它正被另一个进程使用".我知道这是因为Robot Framework(Ride)目前正在使用它.

如果我不使用-d参数,输出文件将保存在临时文件夹中.

c:\users\<user>\appdata\local\temp\RIDEfmbr9x.d\output.xml
c:\users\<user>\appdata\local\temp\RIDEfmbr9x.d\log.html
c:\users\<user>\appdata\local\temp\RIDEfmbr9x.d\report.html
Run Code Online (Sandbox Code Playgroud)

我的问题是,有没有办法在运行时使用Robot Framework将文件移动到自定义位置.

Kar*_* VN 6

您可以在RIDE(Arguments :)中使用以下语法在newfolders中动态创建输出

--outputdir C:/AutomationLogs/%date:~-4,4%%date:~-10,2%%date:~-7,2% --timestampoutputs
Run Code Online (Sandbox Code Playgroud)

上面的语法为您提供以下文件夹中的输出:

Output:  C:\AutomationLogs\20151125\output-20151125-155017.xml
Log:     C:\AutomationLogs\20151125\log-20151125-155017.html
Report:  C:\AutomationLogs\20151125\report-20151125-155017.html
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 :)


Sis*_*hus 5

我知道您想要的最终结果是将您的输出文件放在他们的自定义文件夹中。如果这是您的愿望,它可以在运行时完成,您不必在后期处理中移动它们。不幸的是,这在 RIDE 中不起作用,因为文件夹结构是动态创建的。我有两个选择给你。

选项 1:使用脚本开始测试

RIDE 很棒,但在我看来,不应该使用它来运行测试,而应该使用它来构建和调试测试。脚本更加强大和灵活。

假设您有一个测试 test2.txt,您希望运行,那么您用来执行此操作的脚本可能类似于:

from time import gmtime, strftime
import os

#strftime returns string representations of a date-time tuple.
#gmtime returns the date-time tuple representing greenwich mean time 
dts=strftime("%Y.%m.%d.%H.%M.%S", gmtime())


cmd="pybot -d Run%s test2"%(dts,)
os.system(cmd)
Run Code Online (Sandbox Code Playgroud)

顺便说一句,如果您确实打算使用 rebot 对文件进行后期处理,请注意您可能不需要创建中间日志和报告文件。output.xml 文件包含您需要的所有内容,因此如果您不想创建多余的文件,请使用--log NONE --report NONE

选项 2:使用侦听器进行后期处理

侦听器是您编写的响应事件(x_start、x_end 等)的程序。该close()事件类似于拆卸功能,是最后调用的东西。所以,假设你有一个函数,moveFiles()你只需要创建一个监听器类(myListener),定义close()调用你的moveFiles()函数的方法,并提醒你的测试它应该用参数报告给一个监听器--listener myListener

此选项应该与 RIDE 兼容,尽管我承认我从未尝试过在 IDE 中使用侦听器。