Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在VisualStudio下运行Python的unittest测试总是这么慢吗?_Python_Visual Studio_Unit Testing_Python 3.x_Visual Studio 2015 - Fatal编程技术网

在VisualStudio下运行Python的unittest测试总是这么慢吗?

在VisualStudio下运行Python的unittest测试总是这么慢吗?,python,visual-studio,unit-testing,python-3.x,visual-studio-2015,Python,Visual Studio,Unit Testing,Python 3.x,Visual Studio 2015,我有一个小Python项目,只有几个文件和几个测试文件。共有32项测试。我一直在使用Windows10上的VisualStudio2015来编写代码,它非常适合运行代码、编辑等。它甚至找到了所有的单元测试,当我运行它们时,它会根据它们是通过还是失败在它们旁边加上绿色和红色标记 然而,当我在VisualStudio中选择“全部运行”时(也就是说,在不调试的情况下运行测试),运行32个测试需要19秒,每个测试都需要大约300-400ms的时间。起初,我只是想,嗯,我猜在Python中运行单元测试只是

我有一个小Python项目,只有几个文件和几个测试文件。共有32项测试。我一直在使用Windows10上的VisualStudio2015来编写代码,它非常适合运行代码、编辑等。它甚至找到了所有的单元测试,当我运行它们时,它会根据它们是通过还是失败在它们旁边加上绿色和红色标记

然而,当我在VisualStudio中选择“全部运行”时(也就是说,在不调试的情况下运行测试),运行32个测试需要19秒,每个测试都需要大约300-400ms的时间。起初,我只是想,嗯,我猜在Python中运行单元测试只是比较慢

但如果我退出到命令行,并执行以下操作:

Python -m unittest test1.py test2.py test3.py [etc]
然后,它在13毫秒内成功地运行了32个测试。所以,它的速度快了1000多倍

在VisualStudio中,我似乎找不到任何允许我更改任何有关测试的选项或设置。我可以理解它需要更长的时间,因为它单独记录每个测试,并在测试资源管理器中的项目旁边标记通过/失败状态。但是慢1000倍?没有

目前,19岁的人等待的时间并不长。但是当这达到100或1000个测试时,我将看到运行单元测试的大量时间。或者只是退出到命令行,没有很好地收集任何可能失败的测试的信息


有没有其他人有过这个问题,或者有人能想象出是什么导致了这个问题?或者我只是被它卡住了?

简单的回答是,这是因为它分别运行每个测试(即,就好像您执行了
python-m unittest test1.py;python-m unittest test2.py;…
)。

最坏的情况,只需从命令行运行即可。:)是的,我已经想到了这一点,并为自己编写了一个脚本来查找所有的测试并运行它们。所有的图形api都很慢,你可以从工具提示、自动完成、插件、所有可能加载的lib中获益,这是命令行工具永远不会消亡的原因之一。它不做任何图形。我说的是运行测试所花费的实际时间,而不是之后更新UI或诸如此类的时间。不。如果我运行一个包含4个测试的文件,从Visual Studio运行它总共需要3秒钟,单个测试的时间在390到760毫秒之间。如果我从命令行运行同一个文件,所有四个测试总共需要3毫秒。对不起,让我澄清一下:它为每个测试运行单独的进程,而不是每个带有tests.Ouch的文件。我知道原因了:这样才能得到结果。然而,考虑到这需要这么短的时间,如果它能首先运行所有这些程序就好了。如果它们都通过了,就不需要逐一检查并运行它们,查找哪些失败了。是的,它也可以更有效地获得结果(基本上有一些自定义入口点,可以运行测试,收集结果,然后将它们发送给VS进行解析)。不过,目前的方法是迄今为止最简单的方法,并且是最初添加该功能时计划中所能满足的所有方法。目前似乎没有任何工作项可以改进此方法,所以请随时在