Tutorial :How to use nose with IronPython?



Question:

I installed nose using the 'setup.py install' on the command line , I am able to run 'nosetests' and any python file matching testMatch regular expression is picked up and tests are automated in the %python home%\Scripts directory. Now I want nose to work with my iron Python files , how do I install nose on the %Iron Python home% directory ? i noticed my Iron Python Home directory does not even have a Scripts folder. If i try running 'nosetests' with iron python code , it throws all sorts of exception for eg. no module named clr.

Is anybody using nose with iron python ? if yes , please guide me. I have been struggling with this since an entire day, currently my only workaround has been adding the following in my IronPython code:

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

is this is the only way to go about using nose in iron python files ?

if there is no other way , then I wanted to know how to use the several plugins that nose has ? especially the coverage plugin ? i installed it for python2.6 , but how to make it work for ironpython ?

The reason I am asking is because with python , it gets easy to use the plugins just by calling the command line , but with IronPython I don't know how to make it work.


Solution:1

Your solution is actually all nosetests does:

#!/usr/bin/env python    from nose import main    if __name__ == '__main__':      main()  

You'll want to make sure you add your system's Python lib to the path for it to find the nose extensions:

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

And you'll need to make sure you're executing your script with ipy.exe and not your system's Python executable.


Solution:2

I've been trying to run the sqlalchemy test suite, which uses nose and a plugin. So, this may be useful if anyone is trying to run nose on ironpython with plugins.

this tends not to work transparently on ipy, because setuptools doesn't quite work on ironpython.

after a bit of diggin, i found the nose init.py instructions for registering a plugin manually - essentially, import the plugin class (which subclasses nose.plugins.Plugin), and add it to the call to main().

here's what my script ended up looking like:

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()])  

Hope this helps someone!


Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »