【问题标题】:How to use nose with IronPython?如何在 IronPython 中使用鼻子?
【发布时间】:2010-07-07 20:24:31
【问题描述】:

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

有人在用鼻子和铁蟒吗?如果是,请指导我。一整天以来,我一直在为此苦苦挣扎, 目前我唯一的解决方法是在我的 IronPython 代码中添加以下内容:

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

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

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

我问的原因是因为使用 python ,只需调用命令行就可以轻松使用插件,但使用 IronPython 我不知道如何使其工作。

【问题讨论】:

    标签: python ironpython nosetests


    【解决方案1】:

    您的解决方案实际上就是 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 可执行文件。

    【讨论】:

    • 我做到了,但我想让鼻子测试 --cover-html 工作,那不起作用:(,事实上所有参数都不起作用,-V 没有给出鼻子的版本,-w(不让我明确指定工作目录)等,任何关于我应该用来传递参数的语法的想法。用一个例子来详细说明:我想在命令行上执行以下命令:>nosetests --cover-html
    【解决方案2】:

    我一直在尝试运行 sqlalchemy 测试套件,它使用了鼻子 一个插件。因此,如果有人试图使用插件在 Ironpython 上运行,这可能会很有用。

    这往往不能在 ipy 上透明地工作,因为 setuptools 不能在 Ironpython 上完全工作。

    经过一番挖掘,我找到了用于手动注册插件的nose 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()])
    

    希望这对某人有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-17
      • 2011-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多