2011-05-14 57 views
3

我懷疑我未能正確安裝nosetests。 我用的easy_install鼻子 - 產量nosetests -h無法運行,出現錯誤

Searching for nose 
Best match: nose 1.0.0 
Processing nose-1.0.0-py2.7.egg 
nose 1.0.0 is already the active version in easy-install.pth 
Installing nosetests-script.py script to C:\Python27\Scripts 
Installing nosetests.exe script to C:\Python27\Scripts 
Installing nosetests-2.7-script.py script to C:\Python27\Script 
Installing nosetests-2.7.exe script to C:\Python27\Scripts 

所以它看起來像它安裝的罰款。但是當我運行nosetests -h

PS C:\Users\john\code\python> nosetests -h 
Traceback (most recent call last): 
    File "C:\Python27\Scripts\nosetests-script.py", line 9, in <module> 
    load_entry_point('nose==1.0.0', 'console_scripts', 'nosetests')() 
    File "C:\Python27\lib\site-packages\nose-1.0.0-py2.7.egg\nose\core.py", line 118, in __init__ 
    **extra_args) 
TypeError: __init__() got an unexpected keyword argument 'exit' 

我是否錯過了某個設置步驟?

回答

2

奇怪。在nose/core.pyTestProgram構造函數調用這樣的父類的構造:

... 
extra_args = {} 
version = sys.version_info[0:2] 
if version >= (2,7) and version != (3,0): 
    extra_args['exit'] = exit 
unittest.TestProgram.__init__(
    self, module=module, defaultTest=defaultTest, 
    argv=argv, testRunner=testRunner, testLoader=testLoader, 
    **extra_args) 

unittest/main.pyTestProgram構造接受exit說法:

class TestProgram(object): 
    ... 
    def __init__(self, module='__main__', defaultTest=None, argv=None, 
        testRunner=None, testLoader=loader.defaultTestLoader, 
        exit=True, verbosity=1, failfast=None, catchbreak=None, 
        buffer=None): 
     ... 

所以...我不知道怎麼會發生這種錯誤。你有更多版本的Python安裝嗎?你的鼻子測試是否真的爲Python 2.7使用了正確的unittest模塊?你可以看看unittest\main.py(在你的C:\Python27的某處)並檢查TestProgram構造函數,它是否有exit參數?

+0

我用easy_install pyunit來得到我的單元測試 - 我得到的只是一個編譯的蛋。 1.4.1版本。 我應該用不同的方法來獲得我的單元測試嗎? – GoingTharn 2011-05-14 17:43:44

+0

好吧我在C:\ Python27 \ Lib \ unittest中發現了unittest - 它也有exit = True參數。 也許鼻子使用不同的,也許在PyuNit? – GoingTharn 2011-05-14 17:52:14

+0

PyUnit是問題所在。我刪除了PyUnit蛋,現在鼻子工作正常。 (使用已有的單元測試) – GoingTharn 2011-05-14 17:56:56