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

时间:2013-07-29 08:28:25

标签: 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

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

3 个答案:

答案 0 :(得分:6)

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

--outputdir C:/AutomationLogs/%date:~-4,4%%date:~-10,2%%date:~-7,2% --timestampoutputs

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

Output:  C:\AutomationLogs\20151125\output-20151125-155017.xml
Log:     C:\AutomationLogs\20151125\log-20151125-155017.html
Report:  C:\AutomationLogs\20151125\report-20151125-155017.html

希望这会有所帮助:)

答案 1 :(得分:4)

我了解您想要的最终结果是将输出文件放在自定义文件夹中。如果这是您的愿望,它可以在运行时完成,您不必将它们作为后期处理的一部分移动。遗憾的是,这不适用于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)

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

选项2:使用listener进行后期处理

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

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

答案 2 :(得分:0)

至少你可以编写一个自定义运行脚本来处理测试用例执行后的文件移动。在这种情况下,pybot不再使用这些文件。