9

Python メソッドを呼び出すロボット フレームワーク テスト スイートがあります。テストに失敗することなく、その python メソッドがコンソールにメッセージを返すようにしたいと思います。具体的には、プロセスの時間を計ろうとしています。

「raise」を使用してコンソールにメッセージを返すことができますが、同時にテストに失敗します。

 def doSomething(self, testCFG={}):
    '''
    Do a process and time it. 
    '''
testCFG['operation'] = 'doSomething'
startTime = time.time()
response=self.Engine(testCFG)
endTime = time.time()
duration = int(round(endTime-startTime))
raise "doSomething took", duration//60 , "minutes and", duration%60, "seconds."
errmsg = 'doSomething failed'
if testCFG['code']: raise Exception(errmsg)

または、"print" を使用してログ ファイルにメッセージを返し、テストに失敗することなくレポートすることもできますが、その情報はコンソールではなくレポートでのみ利用できます。

 def doSomething(self, testCFG={}):
    '''
    Do a process and time it. 
    '''
testCFG['operation'] = 'doSomething'
startTime = time.time()
response=self.Engine(testCFG)
endTime = time.time()
duration = int(round(endTime-startTime))
print "doSomething took", duration//60 , "minutes and", duration%60, "seconds."
errmsg = 'doSomething failed'
if testCFG['code']: raise Exception(errmsg)

「印刷」オプションを使用すると、次のようになります。

==============================================================================
Do Something :: Do a process to a thing(Slow Process).                | PASS |
------------------------------------------------------------------------------
doSomething :: Overall Results                                        | PASS |
1 critical test, 1 passed, 0 failed
1 test total, 1 passed, 0 failed
==============================================================================

私が欲しいのはこれです:

==============================================================================
Do Something :: Do a process to a thing(Slow Process).                | PASS |
doSomething took 3 minutes and 14 seconds.
------------------------------------------------------------------------------
doSomething :: Overall Results                                        | PASS |
1 critical test, 1 passed, 0 failed
1 test total, 1 passed, 0 failed
==============================================================================
4

3 に答える 3

13

Python を使用しているため、次の 2 つの簡単な可能性があります。

  1. にメッセージを書き込んでくださいstderr。これらのメッセージは、ロボットのログ ファイルとコンソールの両方に書き込まれます。制限は、実行しているキーワードが終了した後にのみメッセージがコンソールに送信されることです。おまけに、このアプローチは Java ベースのライブラリでも機能します。

  2. sys.__stdout__メッセージをPython で書き込みます。ロボットは and のみをインターセプトsys.stdoutし、 (and ) だけsys.stderrを残します(適切に動作するすべての Python プログラムがそうであるように)。これらのメッセージは最終的にコンソールにのみ送信されますが、それらをログ ファイルにも取得するために書き込むこともできます。sys.__stdout__sys.__stderr__sys.stdout

于 2011-04-04T21:34:52.290 に答える
2

robot.api ライブラリを使用できます。これはライブラリのドキュメントです

https://robot-framework.readthedocs.org/en/latest/_modules/robot/api/logger.html

于 2014-01-16T17:16:49.517 に答える
0

ライブラリに文字列を返させてから、それSet Test Messageを表示するために使用します。

My Test Case  [Documentation]  display data returned from lib call
  ${r} =  mylib.libfunc  arg=param
  Set Test Message  libfunc returned ${r}

参照: http://robotframework.googlecode.com/hg/doc/libraries/BuiltIn.html#Set%20Test%20Message

アップデート:

  1. 新しいリンク: http://robotframework.org/robotframework/latest/libraries/BuiltIn.html#Set%20Test%20Message
  2. 新しいLog To Consoleコマンドは、リアルタイムでコンソールに出力します (つまりSet Test Message、テスト ケースの最後にのみ出力するのではなく、テストの実行中です)。
于 2013-10-15T23:56:02.053 に答える