有没有像Python自动testingunit testing?
基本上,咆哮通知(或其他callback)当testing中断或通过。 有这样的事情吗?
如果没有,应该很容易写..最简单的方法是..
- 运行
python-autotest myfile1.py myfile2.py etc.py
- 检查要监视的文件是否已被修改(可能只是已保存)。
- 在这些文件中运行任何testing。
- 如果testing失败,但在之前的运行过程中,则生成一个咆哮警报。 同样的testing失败,然后通过。
- 等待,然后重复步骤2-5。
我可以看到的问题是如果testing是在一个不同的文件。 简单的解决scheme是在每次保存后运行所有testing..但是如果testing速度较慢,这可能需要比保存之间的时间更长的时间,和/或可能使用大量的CPU功耗等。
要做到这一点,最好的办法是实际看看代码已经改变了,如果函数abc()已经改变了,只能运行与之交互的testing。虽然这会很好,但是我认为这会非常复杂实行?
总结:
- 有什么像Ruby工具
autotest
( ZenTest包的一部分),但对于Python代码? - 如何检查脚本的两个版本之间哪些function发生了变化?
- 是否可以确定一个命令将调用哪些函数? (有点像反向追溯)
我发现autonose是相当不可靠的,但嗅探似乎工作得很好。
$ pip install sniffer $ cd myproject
然后,而不是运行“nosetests”,你运行:
$ sniffer
或者,而不是nosetests --verbose --with-doctest
,你运行:
$ sniffer -x--verbose -x--with-doctest
如自述文件中所述,安装一个特定于平台的文件系统监视库pyinotify
, pywin32
或MacFSEvents
(所有可通过pip
等安装)是一个好主意,
由gfxmonk创build的autonose :
Autonose是一个类似自动testing的Python工具,使用优秀的nosetest库。
自动testing跟踪文件系统更改,并在添加,删除或更新文件时自动重新运行任何已更改的testing或依赖关系。 如果文件已被修改,或者文件
import
的文件已更改,则该文件计数已更改。…
Autonose目前拥有OSX和GTK的本地GUI。 如果这两者都不可用,则可以运行控制台版本(使用–console选项)。
我刚刚发现这个: http : //www.metareal.org/p/modipyd/
我目前正在使用thumb.py,但由于我目前的项目从一个小型项目转换到中型项目,我一直在寻找一些可以做更彻底的依赖性分析的东西,并通过一些调整,我得到modipyd启动和运行很快。
也许buildbot将是有用的http://buildbot.net/trac
对于你的第三个问题,也许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
包含被调用的函数。 如果在创build跟踪器时指定countcallers = 1
,则可以获取主叫方/被叫方关系。 有关更多信息,请参阅trace
模块的文档 。
您也可以尝试通过静态分析来获得调用,但由于Python的dynamic特性,这可能是危险的。
Django的开发服务器有一个文件更改监视器,用于监视修改并自动重新加载。 您可以重新使用此代码启动文件修改的unit testing。
find这个: http : //jeffwinkler.net/2006/04/27/keeping-your-nose-green/
Guard是一个很好的工具,可以监视文件更改并自动触发任务。 它是用Ruby编写的,但它可以用作这种任务的独立工具。 有一个guard-nosetests插件可以通过鼻子来运行Pythontesting。
Guard支持包括Growl在内的跨平台通知(Linux,OSX,Windows)以及许多其他强大function。 我的一个不能生存,没有开发工具。
检查出pytddmon。 这是一个如何使用它的video演示: http : //pytddmon.org/?page_id = 33
熵是一个非常有用的工具,可以让你的生活更轻松。 用C编写,在引擎盖下使用kqueue或inotify 。
如果您的项目中的任何*.py
文件被更改,以下命令将运行您的testing套件。
ls */**.py | entr python -m unittest discover -s test
适用于BSD,Mac OS和Linux。 你可以从家酿中获得。