Python 为什么测试要等待两秒钟才能执行?
当我在项目中运行Python 为什么测试要等待两秒钟才能执行?,python,nose,Python,Nose,当我在项目中运行nosetests时,即使没有测试,或者测试很琐碎(例如assert_equal(1,1)),执行测试也至少需要2秒钟 为什么鼻子测试这么慢 2秒似乎并不长,但它使真正快速的twitch开发周期变得不可能 这已经困扰了我很长时间——如果可能的话,我希望实现一个优雅的解决方案 编辑:添加要复制的代码 下面是test\u nose\u stuff.py: from nose.tools import assert_equal, assert_dict_equal def test_
nosetests
时,即使没有测试,或者测试很琐碎(例如assert_equal(1,1)
),执行测试也至少需要2秒钟
为什么鼻子测试这么慢
2秒似乎并不长,但它使真正快速的twitch开发周期变得不可能
这已经困扰了我很长时间——如果可能的话,我希望实现一个优雅的解决方案
编辑:添加要复制的代码
下面是test\u nose\u stuff.py
:
from nose.tools import assert_equal, assert_dict_equal
def test_stuff():
pass
从仅包含一个文件的目录:
$ time nosetests
.
----------------------------------------------------------------------
Ran 1 test in 0.002s
OK
real 0m1.103s
user 0m0.585s
sys 0m0.237s
在反复试验中,实际执行时间从0.5秒到1.2秒不等
我正在运行python 2.7.13,它是通过conda安装的,nosetests版本1.3.7。我决定对它进行评测,
nose
在启动时将大部分时间用于初始化pkg\u资源
(来自setuptools
的插件框架)
我的分析脚本基本上如下所示:
python -m cProfile -o stats.pstats $(which nosetests)
gprof2dot.py --skew=.1 -wn3 -f pstats stats.pstats | dot -Tsvg -o stats.svg
我使用的gprof2dot.py
是实际项目的一个分支,因此SVG不会像以前那样损坏:
如果安装了许多软件包,pkg\u资源
需要很长时间才能初始化
使用此最小pip冻结:
$ pip freeze
nose==1.3.7
wheel==0.24.0
$ time nosetests
.
----------------------------------------------------------------------
Ran 1 test in 0.001s
OK
real 0m0.166s
user 0m0.120s
sys 0m0.012s
安装了更多软件包后:
$ pip freeze | wc -l
430
$ time nosetests
.
----------------------------------------------------------------------
Ran 1 test in 0.001s
OK
real 0m0.501s
user 0m0.360s
sys 0m0.076s
这一时间急剧增加事实并非如此。你必须发布重新创建问题的步骤。非常有用。跟进:是否有可能禁止在鼻内使用pkg_资源?我讨厌测试周期中的无负载时间。它在模块范围内初始化:您可以
pip卸载setuptools
,但这可能是不明智的:)