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

Robotframework 如何在运行时在Robot Framework(Ride)中获取和设置默认输出目录,robotframework,Robotframework,我想将所有输出文件移动到一个自定义位置,移动到运行时根据日期时间创建的运行目录中。datetime的输出文件夹是在TestSetup中创建的 我有“Process_Output_files”函数,它将文件移动到Run文件夹(Run1、Run2、Run3文件夹) 我尝试使用参数-d,并使用函数“Process\u Output\u files”作为套件分解,将输出文件移动到相应的运行目录 但是我得到了以下错误“进程无法访问该文件,因为它正被另一个进程使用”。我知道这是因为机器人框架(Ride)目前

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

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

我尝试使用参数-d,并使用函数“Process\u Output\u files”作为套件分解,将输出文件移动到相应的运行目录

但是我得到了以下错误“进程无法访问该文件,因为它正被另一个进程使用”。我知道这是因为机器人框架(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
c:\users\\appdata\local\temp\RIDEfmbr9x.d\output.xml
c:\users\\appdata\local\temp\RIDEfmbr9x.d\log.html
c:\users\\appdata\local\temp\RIDEfmbr9x.d\report.html

我的问题是,是否有一种方法可以在运行时使用in-Robot Framework将文件移动到自定义位置。

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

我知道您希望的最终结果是将输出文件放在自定义文件夹中。如果这是您的愿望,那么它可以在运行时完成,并且您不必在后期处理中移动它们。不幸的是,这在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:使用a进行后期处理 侦听器是您编写的响应事件(x_开始、x_结束等)的程序。
close()
事件类似于teardown函数,是最后调用的事件。因此,假设您有一个函数
moveFiles()
,您只需要创建一个侦听器类(myListener),定义
close()
方法来调用您的
moveFiles()
函数,并提醒您的测试应该使用参数
--listener myListener
向侦听器报告


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

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

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

希望这有帮助:)

您有样品吗?如果是,请提供示例。我希望脚本在每个操作系统中执行。所以我在考虑.py脚本。@Karthick,这就是我正在使用的:
import os import sys testexecute=sys.argv[1]#print testexecute os.system(“pybot-d../rflog”+testexecute)
谢谢Sisy,我找到了一种在运行时实现这一点的方法。解决方案是:创建.py文件,该文件将创建运行时报告目录,并在调用robot.run函数时将其作为参数传递。如果您正在编写python脚本,则无需调用
os.system
。Robot有一个用于从python运行测试的API。看FWIW,机器人的框架工作和骑乘是两件不同的事情。骑行就是IDE。该框架是独立的,不需要或不使用RIDE来运行。不清楚为什么不使用
-d
选项。为什么这对你们不起作用?嗨,Karthik VN,我该去哪里写这个论点?在R的任何地方都找不到http://stackoverflow.com/users/5602347/karthik-vnIDE ?嗨,Karthik VN,如何给时间戳也添加到输出文件夹名称我知道了,它是下面的命令,
--outputdir TestResult-%date:~-4,4%%date:~-10,2%%date:~-7,2%%time:~-11,2%%time:~-8,2%%time:~-5,2%--timestamp
然后输出将在以下文件夹中:
输出:D:\RobotPoC\TestResult\20170209152358\output-20170209-152359.xml
Hey@vinu,骑乘工具中有一个Run选项卡。参数文本框在此选项卡内。嘿@SaradaAkurathi,我猜,您的自动化将在上午12点到9点59分之间抛出一个错误。这是因为%time%将返回在pybot执行期间导致语法错误的一位数小时戳。由于文件夹名称中有一个空格而导致语法错误,这是由一位数的小时戳引起的。我想,我还没有试过。