Python trace函数追踪结果打印到终端但未生成保存文件的原因
Python trace模块指定coverdir未生成的排查结论
以下代码执行时,终端可正常输出trace追踪结果,但指定的trace_vizier目录始终不会生成:
import sys import trace tracer = trace.Trace( ignoredirs=[sys.prefix, sys.exec_prefix], trace=False, countfuncs = True, count=False, timing = True ) tracer.run('exec(script, variables, variables)') r = tracer.results() r.write_results(show_missing=True, coverdir='trace_vizier')
根本原因
write_results方法的coverdir参数仅用于存储行级代码覆盖率统计结果,只有开启行执行计数功能时,才会触发该目录创建、文件写入的逻辑。上述代码初始化Trace实例时设置count=False,直接关闭了行级执行计数、覆盖率统计能力,因此不会执行覆盖率相关的写文件操作,指定目录自然不会生成。- 当前代码开启的是
countfuncs=True(函数调用计数)、timing=True(调用耗时统计),这两类统计结果的输出和coverdir参数无关:- 未指定输出目标时,结果会直接打印到标准输出流,也就是终端里看到的内容
- 要保存这两类结果到文件,需要在调用
write_results时传入file参数指定写入的文件对象,示例:with open("trace_function_stats.txt", "w", encoding="utf-8") as res_file: r.write_results(show_missing=True, coverdir="trace_vizier", file=res_file)
- 如果需要生成行覆盖率文件存入
coverdir目录,将初始化Trace时的count参数改为True即可。开启后模块会自动统计每行代码的执行次数,调用write_results时会自动创建指定目录,将每个被追踪文件的覆盖率结果写入对应文件。
内容的提问来源于stack exchange,提问作者Nachiket Deo
相关产品推荐
相关产品推荐

