Как использовать нос с IronPython?

Я установил нос, используя 'setup.py install' в командной строке, я могу запускать тесты носа, и любой файл python, соответствующий регулярному выражению testMatch, выбирается, а тесты автоматизируются в каталоге% python home% \ Scripts. Теперь я хочу, чтобы нос работал с моими железными файлами Python, как мне установить нос в домашний каталог% Iron Python%? Я заметил, что в моем домашнем каталоге Iron Python даже нет папки Scripts. Если я попробую запустить тесты с железным кодом Python, он выдаст всевозможные исключения, например. нет модуля с именем clr.

Кто-нибудь использует нос с железным питоном? если да, пожалуйста, помогите мне. Я боролся с этим целый день, в настоящее время мой единственный обходной путь - добавить следующее в мой код IronPython:

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

Это единственный способ использовать нос в железных файлах Python?

если нет другого пути, то я хотел знать, как использовать несколько плагинов, которые есть в носу? особенно плагин покрытия? я установил его для python2.6, но как заставить его работать для ironpython?

Причина, по которой я спрашиваю, заключается в том, что с python становится проще использовать плагины, просто вызывая командную строку, но с IronPython я не знаю, как заставить его работать.


person Gokul    schedule 07.07.2010    source источник


Ответы (2)


На самом деле ваше решение состоит из всего, что выполняет 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 вашей системы.

person Michael Greene    schedule 09.07.2010
comment
Я сделал это, но я хочу, чтобы сработали тесты --cover-html, которые не работают :(, фактически ни один из аргументов не работает, -V не дает версию носа, -w (не позволяет явно указать рабочий каталог) и т. , любое представление о синтаксисе, которое я должен использовать и для передачи аргументов. Для пояснения на примере: я хочу сделать то, что делает следующая команда в командной строке: ›ностестс --cover-html - person Gokul; 09.07.2010

Я пытался запустить набор тестов sqlalchemy, который использует нос и плагин. Так что это может быть полезно, если кто-то пытается насмехаться над Ironpython с помощью плагинов.

это обычно не работает прозрачно на ipy, потому что setuptools не совсем работает на ironpython.

немного покопавшись, я нашел инструкции носа init .py для регистрации плагина вручную - по сути, импортируйте класс плагина (который является подклассом носа .plugins.Plugin) и добавьте его к вызову в главный().

вот как выглядел мой сценарий:

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

Надеюсь, это кому-то поможет!

person hwjp    schedule 11.07.2010