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
,但这可能是不明智的:)