2016-12-08 7 views
2

ログレベルを取り、それをデフォルトレベルに設定するPythonスクリプトがあります。ログメッセージが通過すると、レベル階層に従って印刷されるか印刷されません(つまり、デフォルトがDEBUGの場合はすべてのメッセージが表示され、デフォルトの場合はCERTICAL & ERRORメッセージのみが表示されます)。ロボットフレームワークがファイルを作成していないか、書き込んでいない

私のPythonコードは、この線に沿っている:

# Sets default log level. 
def set_default_level(self,level): 
    levels = { 
     'DEBUG': logging.DEBUG, 
     'INFO': logging.INFO, 
     'WARNING': logging.WARNING, 
     'ERROR': logging.ERROR, 
     'CRITICAL': logging.CRITICAL 
    } 

    # Sets up configuration for logging message. 
    logging.basicConfig(format='%(levelname)s: %(message)s', filename = 'log_file.log', filemode = 'w', level=levels[level]) 

def log_message(self, lvl, message): 
    msg_print = { 
     '[DEBUG]': logging.debug, 
     '[INFO]': logging.info, 
     '[WARNING]': logging.warning, 
     '[ERROR]': logging.error, 
     '[CRITICAL]': logging.critical 
    } 
    msg_print[lvl](message) 

だけではPythonの実行中にこのコードは、作業を行います。しかし、Robot Frameworkでこのコードを実行すると、ファイルを作成したり書き込んだりしません。現在私が持っているフレームワークは、次のとおりです。

Test Validate Info Prints 
    [Documentation]  Checks if all BUT debug messages are printed. 
    ...     Output should not contain any DEBUG level messages. 
    Set Default Level ${INFO_LVL} 
    Log Message   ${DEBUG}    ${DEBUG_MSG} 
    Log Message   ${INFO}    ${INFO_MSG} 
    Log Message   ${ERROR}    ${ERROR_MSG} 
    Log Message   ${WARNING}    ${WARNING_MSG} 
    Log Message   ${CRITICAL}   ${CRITICAL_MSG} 

    ${LogFile}=   Get File    ./log_file.log 

    Should contain  ${LogFile}  this build has no associated authentication! 
    Should contain  ${LogFile}  S3 Bucket connected successfully 
    Should contain  ${LogFile}  No working Internet connection available 
    Should contain  ${LogFile}  Application has failed. 

    Should not contain ${LogFile}  please debug this 

これはINFOのデフォルトレベルのテストです。他のテストケースはこのテストケースと非常によく似ていますが、それらのすべてがファイル作成に関して同じ問題を抱えています。私は問題を見てきましたが、何も見つかっていませんでした。最初にPowerShellを使用してフレームワークを実行していましたが、Git BASHと同じ問題に切り替えました。私もWindows 7で動作しています。

ありがとうございました!

答えて

1

あなたのコードを試してみてください!私はそれが期待される行動であると信じ始めました。

なぜですか?Robot Frameworkのログインは、コードで使用しているのと同じ「ロギング」Pythonライブラリを使用して処理する必要があるためです。

[INFO]、[DEBUG]などのメッセージを実際に渡しているときは、実際には新しいロガーを作成していないため、Robot Frameworkの既存のロガーに渡すだけの効果があります!したがって、ロボットのフレームワークのlog.htmlにあるすべてのメッセージが表示されます。以下のようになります。

20161209 12:24:58.497 WARN Application has failed.  
20161209 12:24:58.499 WARN No working Internet connection available  
20161209 12:24:58.501 WARN this build has no associated authentication! 

これは単なる考えです。

+0

私は、ありがとう! Pythonスクリプトでログレベルを変更するだけでなく、Robot Frameworkも変更するようにコードを修正しました。これは今働いているようだ。 – Amanda

関連する問題