鼻子测试 --with-profile --profile-stats-file 输出
输出不能被runsnake读取,因为nosetest使用hotshot,如果我想生成一个可以用runsnake读取的文件,我需要把它转换成这样:
st = hotshot.stats.load('输出')
st.dump_stats('output_new')
我可以直接使用 cProfile 运行测试以使用 runnake 读取吗?
根据@squid 的答案,您可以使用一个名为nose的插件nose-cprof
来用cProfile 替换nose 默认分析器hotshot。
要安装它:
pip install nose-cprof
然后像这样调用鼻子:
nosetests --with-cprofile
它应该生成一个 cProfile 输出文件,然后您可以使用runsnakerun
.
@cihanpesend 的回答对我来说不太奏效(cProfile 找不到'nosetests'),但我确实在 Linux 上使用:
python -m cProfile -o profile.out `which nosetests` .
生成的输出在 runnake 中运行良好。
(大概在 Windows 上,您可以替换which nosetests
为您的 nosetests 顶级 python 脚本的硬编码路径。)
我认为你是对的,nosetests 的热门分析器的输出与 runnake 不兼容。当然,对我来说,这两个开箱即用也不是很好。
我没有关于nosetest 的信息,除了它是python 项目。所以;
python -m cProfile -o outputfile nosetest
然后,
runsnake outputfile
RunSnakeRun 对于可视化分析器非常有用。
注意:要运行runsnake
,必须安装 wx 和 numpy。
更新:来自 omikron 的评论;runsnakerun 不支持 python3 配置文件输出。(我没试过)
或者你可以试试nose-cprof插件: https ://github.com/msherry/nose-cprof
它用 cProfile 代替 hotshot
与pyprof2calltree
:
$ pip install pyprof2calltree
$ nosetests --with-cprofile --profile-stats=profile.out tests/
$ pyprof2calltree -i profile.out -k
与xdot
:
$ sudo apt install xdot
$ gprof2dot -f pstats profile.out | dot -Tpng -o profile.png