基本上,当测试中断或通过时,咆哮通知(或其他回调)。 有这样的事吗?
如果没有,它应该很容易写。最简单的方法是......
python-autotest myfile1.py myfile2.py etc.py
我可以看到的问题是测试是否在不同的文件中。简单的解决方案是在每次保存后运行所有测试..但是测试速度较慢,这可能需要比保存之间的时间更长,和/或可能使用大量CPU功率等。
最好的方法是实际看到代码的哪些部分已经改变,如果函数abc()发生了变化,只运行与之交互的测试..虽然这很好,但我认为它会是实施起来非常复杂?
总结:
autotest
(ZenTest package的一部分),但对于Python代码?答案 0 :(得分:27)
我发现autonose非常不可靠,但sniffer似乎效果很好。
$ pip install sniffer
$ cd myproject
然后运行:
而不是运行“nosetests”$ sniffer
或者代替nosetests --verbose --with-doctest
,您运行:
$ sniffer -x--verbose -x--with-doctest
正如readme中所述,最好安装一个特定于平台的文件系统监视库,pyinotify
,pywin32
或MacFSEvents
(所有可安装的)通过pip
等)
答案 1 :(得分:16)
Autonose是一个类似于自动测试的工具,使用优秀的nosetest库。
autotest跟踪文件系统更改,并在添加,删除或更新文件时自动重新运行任何已更改的测试或依赖项。如果文件已被自我修改,或者文件
import
已更改,则文件计为已更改。...
Autonose目前有一个OSX和GTK的原生GUI。如果这些都不可用,您可以改为运行控制台版本(使用--console选项)。
答案 2 :(得分:3)
我刚发现:http://www.metareal.org/p/modipyd/
我目前正在使用thumb.py,但是当我的当前项目从一个小项目转变为一个中型项目时,我一直在寻找可以做更彻底的依赖性分析的东西,并进行一些调整,我很快就开始运行了。
答案 3 :(得分:3)
Guard是一款出色的工具,可以监控文件更改并自动触发任务。它是用Ruby编写的,但它可以作为一个独立的工具用于任何这样的任务。有一个guard-nosetests插件可以通过nose运行Python测试。
Guard支持跨平台通知(Linux,OSX,Windows),包括Growl,以及许多其他强大功能。我的一个无法使用的开发工具。
答案 4 :(得分:3)
可以让您的生活更轻松的一个非常有用的工具是entr。用C语言编写,并在引擎盖下使用kqueue或inotify。
如果项目中的任何*.py
文件发生更改,则以下命令会运行您的测试套件。
ls */**.py | entr python -m unittest discover -s test
适用于BSD,Mac OS和Linux。你可以从Homebrew获得entr。
答案 5 :(得分:2)
也许buildbot会很有用http://buildbot.net/trac
答案 6 :(得分:2)
对于第三个问题,也许trace
模块就是您所需要的:
>>> def y(a): return a*a
>>> def x(a): return y(a)
>>> import trace
>>> tracer = trace.Trace(countfuncs = 1)
>>> tracer.runfunc(x, 2)
4
>>> res = tracer.results()
>>> res.calledfuncs
{('<stdin>', '<stdin>', 'y'): 1, ('<stdin>', '<stdin>', 'x'): 1}
res.calledfuncs
包含被调用的函数。如果在创建跟踪器时指定countcallers = 1
,则可以获得调用者/被调用者关系。有关详细信息,请参阅docs of the trace
module。
您也可以尝试通过静态分析来获取调用,但由于Python的动态特性,这可能很危险。
答案 7 :(得分:2)
Django的开发服务器有一个文件更改监视器,可以监视修改并自动重新加载。您可以重复使用此代码来启动文件修改的单元测试。
答案 8 :(得分:2)
也许Nose http://somethingaboutorange.com/mrl/projects/nose/有一个插件http://somethingaboutorange.com/mrl/projects/nose/doc/writing_plugins.html
找到了这个:http://jeffwinkler.net/2006/04/27/keeping-your-nose-green/
答案 9 :(得分:1)
查看pytddmon。以下是如何使用它的视频演示: http://pytddmon.org/?page_id=33
答案 10 :(得分:0)
通过观看.py文件并执行TraceEnabled= true
,可以将nodemon用于任务。该命令将为:manage.py test
。
nodemon --ext py --exec "python manage.py test"
是一个npm软件包,但是我认为您已经安装了节点。