Multithreading RobotFramework监视线程以触发拆卸

Multithreading RobotFramework监视线程以触发拆卸,multithreading,robotframework,Multithreading,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_err

我试图在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\u lib=builtin()。但是,我看到以下错误:

AttributeError:“dict”对象没有属性“致命错误”


此外,删除
all=True
参数允许函数通过并触发致命错误,但是我注意到它不会触发主线程中的拆卸,这正是我打算做的。关于如何从次线程中的
fatal\u error()
函数触发主线程中的拆卸,有什么建议吗?

您正在将
builtin\u lib
设置为字典(结果是
builtin()。获取库实例(…,all=True)
。如错误消息所述,此词典没有
致命错误方法

更改此项:

builtin_lib.fatal_error(msg='Force Teardown')
……为此:

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

如果只需要对内置库的引用(相对于所有库的字典),则根本不需要调用
get\u library\u实例
,因为
BuiltIn()
已返回库的一个实例。

我之前尝试过此操作,但仍然无法在主线程中强制拆除。第二个线程中的致命错误似乎无法在主线程中强制拆除。