2010-07-01 7 views
10

Ich bin mir nicht sicher, wie man den __main__ Handler des Nasenmoduls zum Arbeiten bringt. Ich habe dies am Ende meines Testmodul:Gibt es eine Möglichkeit, Pythons Bugmodul in __main__ und in der Befehlszeile gleich zu machen?

if __name__ == "__main__": 
    import nose 
    nose.main() 

Was mir gibt:

---------------------------------------------------------------------- 
Ran 0 tests in 0.002s 

OK 

aber ich dasselbe über die Befehlszeile ausführen, findet es die Tests und führt sie aus:

MacBook-Pro:Storage_t meloam$nosetests FileManager_t.py 
............E.. 
====================================================================== 
ERROR: testStageOutMgrWrapperRealCopy (WMCore_t.Storage_t.FileManager_t.TestFileManager) 
---------------------------------------------------------------------- 

SNIP

---------------------------------------------------------------------- 
Ran 15 tests in 0.082s 

FAILED (errors=1) 

Ich habe mit verschiedenen Argumenten an nose.main() gespielt, aber ich kann nichts finden, was funktioniert. Fehle ich etwas wirklich offensichtlich?

Dank

Antwort

9

Aus Gründen der Nachwelt, ist es das, was ich benutze:

if __name__ == '__main__': 
    import nose 
    nose.run(argv=[__file__, '--with-doctest', '-vv']) 

Die --with-doctests wird auch Ihre Doctests in der gleichen Datei auszuführen.

+0

Merkwürdig ist, dass ich dies nicht nur aus Aquamacs laufen kann. Aquamacs legt die Variable __file__ für die temporäre Datei, in die der Puffer geschrieben wird, nicht fest. –

+0

Geben Nase den Dateinamen ist schlau. Ich bekam merkwürdige Fehler, als ob ich versuchte, die Funktion als Modulname zu interpretieren. –

+0

Dies scheint funktionell äquivalent zu 'nose.runmodule (argv = ['nose', '- mit-doctest', '-vv'])' zu sein – MarkHu

0

Sie benötigen nose.core.TestProgram direkt verwenden, indem sie gefälschte Befehlszeilenargumente übergeben. Dass ich aber nicht sicher, wenn die Tests aus dem gleichen Modul finden, wie Sie verwenden

7
if __name__ == '__main__': 
    import nose 
    nose.run(defaultTest=__name__) 
1

Ich empfehle Prüfung 2 Dinge:

Stellen Sie sicher, Ihre Quelle FILES die entsprechende Namenskonvention : (detailliert in dieser answer).

Ich, zum Beispiel, musste "_Test" an alle meine Quelldateien anhängen. Dann alles, was Sie benötigen, ist dieses Argument (vorausgesetzt, Ihr Haupt an der Wurzel der Tests):

nose.main(defaultTest="") 

ich versuchte:

nose.run(defaultTest=__name__) 

als eine vorherige Antwort vorgeschlagen, aber aus irgendeinem Grunde Es funktionierte nicht für mich. Ich musste BEIDES tun, um es zum Laufen zu bringen!

Ich hoffe, es hilft.

EDIT: By the way, Aufruf mit

nose.run() 

oder

nose.main() 

machte keinen erkennbaren Unterschied entweder.

Verwandte Themen