3

すべての出力ファイルをカスタムの場所、実行時に日時に基づいて作成された実行ディレクトリに移動したいと考えています。日時別の出力フォルダーは、TestSetup で作成されます。

ファイルを実行フォルダー (Run1、Run2、Run3 フォルダー) に移動する関数「Process_Output_files」があります。

引数-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:) で次の構文を使用して、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

お役に立てれば :)

于 2015-11-25T03:14:37.617 に答える
5

最終結果として、出力ファイルをカスタム フォルダーに保存することをお勧めします。これが必要な場合は、実行時に実行でき、後処理の一部としてそれらを移動する必要はありません。残念ながら、フォルダ構造は動的に作成されるため、これは RIDE では機能しません。2 つの選択肢があります。

オプション 1: スクリプトを使用してテストを開始する

RIDE は素晴らしいですが、私の謙虚な意見では、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()イベントは、teardown 関数に似ており、最後に呼び出されます。したがって、関数があると仮定するとmoveFiles()、リスナー クラス (myListener) を作成し、関数close()を呼び出すメソッドを定義moveFiles()し、引数 でリスナーにレポートする必要があることをテストに警告するだけ--listener myListenerです。

このオプションは RIDE と互換性があるはずですが、IDE でリスナーを使用したことがないことは認めます。

于 2013-11-30T23:53:06.273 に答える