我有一个名为Log的函数,它将日志字符串写入robot框架日志文件。 如果我从定义了该函数的.py内调用该函数,它将按预期登录到output.html。但是,如果我从另一个python函数init.py调用此函数,而init.py又使用subprocess.call从A.py本身调用,则它不会登录到output.html。它只是忽略了这一点。 A.py:
def Log( logString,typeOfLog):
ts = time.time()
st = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')
print(st)
if typeOfLog=="INFO":
logger.console(st + ' ' + logString)
logger.info(logString)
elif typeOfLog=="DEBUG":
logger.console(st + ' ' + logString)
logger.debug(logString)
elif typeOfLog=="WARN":
logger.console(st + ' ' + logString)
logger.warn(logString)
elif typeOfLog=="ERROR":
logger.console(st + ' ' + logString)
logger.error(st + ' ' + logString)
elif typeOfLog=="":
logger.console(logString)
logger.trace(logString)
.
.
.
.
def Test():
Log("My debug statement in DEPLOY.PY","INFO")----->gets logged to output.html
ret = subprocess.call("python init.py", shell=True)
.
.
.
init.py的代码:
from A import Log
from robot.api import logger
def initfunc1():
Log("Something","INFO")------>this does not get logged to output.html
initfunc1()
如果有人能解释为什么会发生这种情况,以及如何按照预期从init.py调用Log函数并登录到output.html,这将对我有很大帮助
提前谢谢
从
subprocess.call
开始的进程没有访问Robot Framework(RF)执行上下文的权限,该上下文是它能够将日志消息写入RF输出文件(output.xml、log.html等)所必需的。在这种情况下,由于进程无法找到上下文,因此robot.api.logger
将使用python日志记录模块记录消息,有关详细信息,请参见logger docs为了从子进程获取到robot日志的输出,可以使用
subprocess.run
而不是subprocess.call
来捕获子进程的输出,并将捕获的输出记录到RF输出。另请参见RFProcess library,了解从RF执行进程的另一种方法相关问题 更多 >
编程相关推荐