在不同版本的python中同时运行测试的nose插件。
NoseMultiVersion的Python项目详细描述
nosemultiversion是一个Nose插件,可以在不同版本的python中同时运行测试。
当插件被激活时,您的测试套件派生出子进程,以便在每个python解释器中运行相同的测试,然后在主进程中打印结果。它是为那些希望支持python遗留版本的库或应用程序设计的,或者是为那些需要在不同配置的虚拟环境中工作的项目设计的。因为它通过execnet和并行子进程使用套接字,所以只会为测试时间增加最小的开销。
安装
nosemultiversion、Nose和execnet必须安装在要在其中运行测试的每个python版本中。测试和应用程序模块不需要在每个python版本中安装。
下面是如何安装nosemultiversion及其依赖项:
从源安装pip
抓住pip source并执行如下操作:
$ cd /pip/source $ sudo python2.4 ./scripts/pip install -e hg+http://bitbucket.org/kumar303/nose-multiversion/#egg=NoseMultiVersion $ sudo python2.5 ./scripts/pip install -e hg+http://bitbucket.org/kumar303/nose-multiversion/#egg=NoseMultiVersion $ sudo python2.6 ./scripts/pip install -e hg+http://bitbucket.org/kumar303/nose-multiversion/#egg=NoseMultiVersion
使用来自pypi的pip进行安装
如上文所述,但请执行:
$ cd /pip/source $ sudo python2.4 ./scripts/pip install NoseMultiVersion $ sudo python2.5 ./scripts/pip install NoseMultiVersion $ sudo python2.6 ./scripts/pip install NoseMultiVersion
使用设置工具安装
$ sudo easy_install-2.4 http://bitbucket.org/kumar303/nose-multiversion/get/tip.zip $ sudo easy_install-2.5 http://bitbucket.org/kumar303/nose-multiversion/get/tip.zip $ sudo easy_install-2.6 http://bitbucket.org/kumar303/nose-multiversion/get/tip.zip
在多个版本的python中运行一个简单的测试套件
如果您的应用程序没有许多依赖项,那么您可能只需在多个版本中运行测试,例如:
$ cd /your/test/suite $ nosetests --in-python=2.4,2.5,2.6
在virtualenv中运行复杂的测试套件
很可能您的应用程序有一些依赖项,您可能正在使用自定义的virtualenv管理这些依赖项。 传递给--in-python=选项的值也可以是python解释器的绝对路径,因此设置virtualenv目录,然后运行如下测试:
$ cd /your/test/suite $ nosetests --in-python=/path/to/a/virtualenv-for-2.5/bin/python --in-python=/path/to/a/virtualenv-for-2.6/bin/python
在配置脚本中声明选项值
与任何nose选项一样,您可以使用config file设置其值,如下所示:
[nosetests] in-python= /path/to/your-virtualenv1/bin/python /path/to/your-virtualenv2/bin/python /path/to/jython /path/to/your-custom-build/bin/python
致谢
此插件由kumar mcmillan<;kumar.mcmillan@gmail.com>;创建。非常感谢holger krekel将execnet提取到自己的包中。这使得nose可以从py.test:)中窃取一个不错的特性
错误,修补程序
将所有错误和补丁提交到http://bitbucket.org/kumar303/nose-multiversion/–谢谢!
随机音符
- 如果另一个插件尝试进行帧破解,那么它可能会崩溃,因为回溯和帧被压平,然后被pickle,以便它们可以从工作进程发送到主进程。
- 当Nose supports Python 3.0和execnet一起使用时,将3.0添加到您的选项中应该可以神奇地工作!
- 可能还有其他一些漂亮的东西可以从py.test中窃取,比如当您不想在特定版本中运行测试时,会引发nose的skiptest异常的装饰器。