2016-12-13 12 views
0

私はロボットのフレームワークを介し失敗し、私に13コマンドのロボットフレームワークの終了ステータスが間違っていますか?

の誤った終了ステータスを与えているロボットのフレームワークを介してリモートコマンドを実行しようとしている。しかし、我々はこれを手動で実行する場合TTman.shの終了ステータスは、実際のパスで112あります(標準の戻りコードではありません)。

ここで何か間違っていますか?

enter image description here

+0

どのコマンドが間違った終了ステータスを示していますか? –

+0

@BryanOakley 'TTman.sh'を手動で実行すると' 112'が返されますが、 'robotframework'は常に' 13'を返します。 –

答えて

1

あなたはrobotframeworkからおそらく実際には、あなたが実行から得ているRC 13リモートコマンドのリモートでコードがされて取得されていません - 実行完了時にそのRCは、失敗した場合の数です。私。あなたがこれを観察したとき、13の症例は失敗していたはずです。

コマンドのリターンコードを取得するには、このケースでいくつかの変更が必要です。これは半最後の行は、以下の説明で、のようになります方法です。

${rc}= Execute Command your_command_from_the_question &>/dev/null; echo $? 

まず、あなたのコマンド(STDOUT &標準エラー出力)のすべての出力では、/ dev/nullにリダイレクトされる - それを返さないように。次に特殊な文字列$?が出力されます。最後に実行されたコマンドのRCを保持します(ほとんどの* shバリアント、bashなど)。

最後に、その値は${rc} robotframework変数に格納されています。その場合は、さらに必要なチェックを行うことができます。

このアプローチには欠点があります。標準エラーが隠されているため、コマンドの実行中にエラーが発生することはありません。しかし、そうでなければ、希望の値を得るために、{rc} varの処理をさらに必要としていたRCにインタリーブされます。必要な場合(失敗した場合はstderr出力)、それに応じて変更してください。

P.S.質問のソースのスクリーンショットを追加しないでください。テキストバージョンよりもはるかに使い勝手が悪いです。

関連する問題