2015-10-28 59 views
0

我想在robotframework中有一個監視線程來連續監視信號,並在讀取某個信號時強制拆卸。我有以下代碼。RobotFramework監視線程觸發拆解

import signal 
from datetime import datetime 
from robot.api import logger 
from robot.libraries.BuiltIn import BuiltIn 
import logging 
import thread 
import os 
import sys 
import time 


def do_error_log_monitoring_new(): 
    def _monitor_log(): 
     time.sleep(5) 
     # Monitor_Some_Signal 
     builtin_lib.fatal_error(msg='Force Teardown') 

    thread_logger = logging.getLogger('root') 
    thread_logger.info("Started Fault Listener") 
    builtin_lib = BuiltIn().get_library_instance('BuiltIn', all=True) 
    thread.start_new_thread(_monitor_log,()) 

builtin_lib = BuiltIn().get_library_instance('BuiltIn', all=True)all=True參數返回所有的庫名實例的字典映射。但是我看到了以下錯誤:

AttributeError的:「快譯通」對象有沒有屬性「是fatal_error」

此外,除去all=True參數允許的功能要經過和是fatal_error觸發,但是我注意到它不會在主線程中觸發拆卸,這是我打算做的。有關如何在輔助線程中從fatal_error()函數的主線程中引發拆卸的任何建議?

回答

0

你設置builtin_lib到詞典(BuiltIn().get_library_instances(..., all=True)結果作爲錯誤消息狀態,這本詞典沒有一個fatal_error方法

改變這樣的:。

builtin_lib.fatal_error(msg='Force Teardown') 

...對此:

BuiltIn().fatal_error(msg='Force Teardown') 

如果您只需要對BuiltIn庫(與所有庫的字典相比)的引用,y因爲BuiltIn()已經返回庫的一個實例,所以根本不需要調用get_library_instance

+0

我早些時候嘗試過,但我仍然無法在主線程中強制拆卸。第二個線程中的fatal_error似乎不會在主線程中強制拆卸。 – Drake