如何使用IronPython鼻子?

时间:2010-07-07 20:24:32

标签: python ironpython nosetests

我在命令行上使用'setup.py install'安装了鼻子,我能够运行'nosetests',并且拾取任何匹配testMatch正则表达式的python文件,并在%python home%\ Scripts中自动进行测试目录。现在我想要使用我的铁Python文件,如何在%Iron Python主目录%目录上安装鼻子?我注意到我的Iron Python Home目录甚至没有Scripts文件夹。 如果我尝试使用铁python代码运行'nosetests',它会引发各种异常 例如。没有名为clr。的模块。

有人用铁蟒鼻子吗?如果有,请指导我。一整天以来,我一直在努力解决这个问题, 目前我唯一的解决方法是在我的IronPython代码中添加以下内容:

 import nose 
 nose.main(argv=['<arguments>'])

这是在铁python文件中使用鼻子的唯一方法吗?

如果没有其他方法,那么我想知道如何使用鼻子的几个插件?特别是覆盖插件?我为python2.6安装了它,但是如何使它适用于ironpython?

我问的原因是因为使用python,通过调用命令行很容易使用插件,但是使用IronPython我不知道如何使它工作。

2 个答案:

答案 0 :(得分:0)

您的解决方案实际上只是nosetests所做的:

#!/usr/bin/env python

from nose import main

if __name__ == '__main__':
    main()

您需要确保将系统的Python库添加到路径中以查找其扩展名:

>>>import sys
>>>sys.path.append(r'C:\Python26\lib')

您需要确保使用ipy.exe而不是系统的Python可执行文件执行脚本。

答案 1 :(得分:0)

我一直在尝试运行sqlalchemy测试套件,该套件使用nose 插件。所以,如果有人试图用插件在ironpython上运行鼻子,这可能会很有用。

这往往不能在ipy上透明地工作,因为setuptools对ironpython不起作用。

经过一些挖掘后,我找到了鼻子 init .py手动注册插件的说明 - 基本上,导入插件类(子类nose.plugins.Plugin),并将其添加到对main()的调用。

这是我的剧本最终看起来像:

import sys, os
#import ironclad #not needed. i think.
sys.path.append(r'C:\Python26\lib')
#now load Jeff Hardys sqlite dll which is in sqlite folder (sqlite not supported on ipy)
sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)),'sqlite'))
import clr
clr.AddReference('IronPython.SQLite')
#load plugin
from sqlalchemy.test.noseplugin import NoseSQLAlchemy
from nose import main
if __name__ == '__main__':
    main(addplugins=[NoseSQLAlchemy()])

希望这有助于某人!

相关问题