3

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

我有函数“Process_Output_files”,它将文件移动到运行文件夹(运行1,运行2,运行3文件夹)。

我尝试使用参数-d 并使用函数“Process_Output_files”作为套件拆卸将输出文件移动到相应的运行目录。

但是我收到以下错误“该进程无法访问该文件,因为它正在被另一个进程使用”。我知道这是因为 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 将文件移动到自定义位置。

4

3 回答 3

7

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

--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

希望这可以帮助 :)

于 2015-11-25T03:14:37.617 回答
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)

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

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

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

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

于 2013-11-30T23:53:06.273 回答
0

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

于 2013-08-06T07:26:35.130 回答