将行为输出捕获到动态创建的日志文件中
Capture behave outputs into a dynamically created log file
我正在尝试将 Behave 输出捕获到一个文件中(假设是一个日志文件)。我在“@then”步骤动态地为每个 运行 Behave 基于日期时间创建一个新的日志文件。下面是 steps/xx.py 文件中给出的示例代码。
def filecreation(filename):
chwd=os.chdir('C:\Users\xxx\Desktop\features\test_features')
with open(filename, 'w+') as d:
pass
cur_ts = datetime.datetime.now()
log_time_stamp = str(cur_ts).split('.')[0].replace(' ',':').replace('-',':').replace(':','')
file_name = 'ATMorFrameRelay' + log_time_stamp + '.log'
filecreation(file_name)
pass
现在我正尝试在上面创建的每个 运行 日志文件中发送 Behave 输出。我知道命令 "Behave -o [file name]" 将为每个 运行 创建一个文件,但我认为宁愿为每个新的 运行 将 STDOUT 发送到上面创建的文件。 fine/safer 在类似生产环境中使用 STDOUT 写入文件并且不会导致任何问题。
我是 Python 和 Behave 的新手,所以期待任何 solution/suggestions 如何实现它。任何相关材料或信息也将不胜感激。
提前致谢
可能是这样的,其中 cmd
实际上是 运行 测试的行为命令。
cmd = [
'behave',
'--no-capture',
'--no-capture-stderr',
'--format', 'progress2',
'--logging-level', 'INFO',
'--no-source', '--no-skipped', '--no-summary',
'--tags', 'MACRO'
]
with io.open(filename, 'a') as writer, io.open(filename, 'rb', 1) as reader:
process = subprocess.Popen(cmd, env=env, stdout=writer,stderr=writer)
while process.poll() is None:
sys.stdout.write(reader.read())
sys.stdout.flush()
time.sleep(0.1)
sys.stdout.write(reader.read())
sys.stdout.flush(
我正在尝试将 Behave 输出捕获到一个文件中(假设是一个日志文件)。我在“@then”步骤动态地为每个 运行 Behave 基于日期时间创建一个新的日志文件。下面是 steps/xx.py 文件中给出的示例代码。
def filecreation(filename):
chwd=os.chdir('C:\Users\xxx\Desktop\features\test_features')
with open(filename, 'w+') as d:
pass
cur_ts = datetime.datetime.now()
log_time_stamp = str(cur_ts).split('.')[0].replace(' ',':').replace('-',':').replace(':','')
file_name = 'ATMorFrameRelay' + log_time_stamp + '.log'
filecreation(file_name)
pass
现在我正尝试在上面创建的每个 运行 日志文件中发送 Behave 输出。我知道命令 "Behave -o [file name]" 将为每个 运行 创建一个文件,但我认为宁愿为每个新的 运行 将 STDOUT 发送到上面创建的文件。 fine/safer 在类似生产环境中使用 STDOUT 写入文件并且不会导致任何问题。
我是 Python 和 Behave 的新手,所以期待任何 solution/suggestions 如何实现它。任何相关材料或信息也将不胜感激。
提前致谢
可能是这样的,其中 cmd
实际上是 运行 测试的行为命令。
cmd = [
'behave',
'--no-capture',
'--no-capture-stderr',
'--format', 'progress2',
'--logging-level', 'INFO',
'--no-source', '--no-skipped', '--no-summary',
'--tags', 'MACRO'
]
with io.open(filename, 'a') as writer, io.open(filename, 'rb', 1) as reader:
process = subprocess.Popen(cmd, env=env, stdout=writer,stderr=writer)
while process.poll() is None:
sys.stdout.write(reader.read())
sys.stdout.flush()
time.sleep(0.1)
sys.stdout.write(reader.read())
sys.stdout.flush(