Domanda

Sono nuovo a Ippython e cercando di aiutare un altro sviluppatore di iniziare e stiamo colpendo gli stessi problemi.

Stiamo tentando di eseguire un campione di pitone unittest in Ippython da https://docs.python.org/2/library/unittest.html#basic-esempio Il codice funziona solo dalla riga di comando su Windows e Ubuntu senza alcuna modifica Lo stesso codice esatto dal notebook IPY genera successiva eccezione:

AttributeError: 'module' object has no attribute '/home/myuser/'
.

Il nome file è: /home/myuser/example_unittest.ipynb

Ho noodlod the Ippython Docs e Google senza fortuna al momento del momento.Eventuali suggerimenti di debug o indizi per risolvere questo problema sono apprezzati.

(Stack full):

AttributeError                            Traceback (most recent call last)
<ipython-input-2-39bc0ec16f11> in <module>()
     28 
     29 if __name__ == '__main__':
---> 30     unittest.main()
     31 

/usr/lib/python2.7/unittest/main.pyc in __init__(self, module, defaultTest, argv, testRunner, testLoader, exit, verbosity, failfast, catchbreak, buffer)
     92         self.testLoader = testLoader
     93         self.progName = os.path.basename(argv[0])
---> 94         self.parseArgs(argv)
     95         self.runTests()
     96 

/usr/lib/python2.7/unittest/main.pyc in parseArgs(self, argv)
    147             else:
    148                 self.testNames = (self.defaultTest,)
--> 149             self.createTests()
    150         except getopt.error, msg:
    151             self.usageExit(msg)

/usr/lib/python2.7/unittest/main.pyc in createTests(self)
    156         else:
    157             self.test = self.testLoader.loadTestsFromNames(self.testNames,
--> 158                                                            self.module)
    159 
    160     def _do_discovery(self, argv, Loader=loader.TestLoader):

/usr/lib/python2.7/unittest/loader.pyc in loadTestsFromNames(self, names, module)
    126         of string specifiers. See 'loadTestsFromName()'.
    127         """
--> 128         suites = [self.loadTestsFromName(name, module) for name in names]
    129         return self.suiteClass(suites)
    130 

/usr/lib/python2.7/unittest/loader.pyc in loadTestsFromName(self, name, module)
     98         obj = module
     99         for part in parts:
--> 100             parent, obj = obj, getattr(obj, part)
    101 
    102         if isinstance(obj, types.ModuleType):

AttributeError: 'module' object has no attribute '/home/myuser/'
.

È stato utile?

Soluzione

unittest.main() è principalmente per l'esecuzione della riga di comando.

Per eseguire un unittimo nel notebook Ippython, rimuovere la parte if __name__ == '__main__' del codice e, in una nuova cella, creare una suite di prova e quindi eseguirlo utilizzando TextTestRunner,

suite = unittest.TestLoader().loadTestsFromTestCase(TestSequenceFunctions)
unittest.TextTestRunner().run(suite)
.

Altri suggerimenti

Il motivo per cui stai ottenendo quell'errore a causa di Unittest.main Controlli per argomenti (sys.argv).È ciò che inizia Ippython o Jupyter.

Cambia il tuo codice su:

if __name__ == '__main__':
    unittest.main(argv=['first-arg-is-ignored'], exit=False)
.

Nel notebook, vorrà anche includere exit=False per impedire a unittest.main dal tentativo di spegnere il processo del kernel:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top