有没有像Python自动testingunit testing?

基本上,咆哮通知(或其他callback)当testing中断或通过。 有这样的事情吗?

如果没有,应该很容易写..最简单的方法是..

  1. 运行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 

如自述文件中所述,安装一个特定于平台的文件系统监视库pyinotifypywin32MacFSEvents (所有可通过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。

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。 你可以从家酿中获得。