Ho uno script che fa varie cose e accede ai paramenter usando sys.argv ma quando lo script arriva alla parte più semplice del codice dice che non c'è modulo per questo. Lo script che ho è:Problema con sys.argv [1] quando il modulo unittest è in uno script
class MyScript():
def __init__(self):
self.value = sys.argv[1]
def hello(self):
print self.value
def suite(self):
modules_to_test = ('external_sanity_onvif', 'starttest')
alltests = unittest.TestSuite()
for module in map(__import__, modules_to_test):
alltests.addTest(unittest.findTestCases(module))
return alltests
if __name__ == '__main__':
Run = MyScript()
Run.hello()
log_file = 'log_file.txt'
test_file = open(log_file, "w")
runner = unittest.TextTestRunner(test_file)
unittest.main(defaultTest='Run.suite', testRunner=runner)
Say Entro ./script.py Hello
nella riga di comando. L'errore che ottengo è:
AttributeError: 'module' object has no attribute 'Hello'
Se rimuovo il modulo unittest, funziona. Anche se rimuovo il registro testrunner e lo lascio a:
unittest.main(defaultTest='Run.suite')
Questo ancora non funziona.
Qualcuno può aiutare.
Grazie
Ho provato questo hack, ma cerca ancora di leggere il sys.argv
.
project = sys.argv[4:]
sys.argv = sys.argv[0:4]
Ho provato questo con un solo argv
ma ancora i pneumatici di leggere i parametri extra.
Potrebbe inviare il messaggio di errore completo (con l'analisi dello stack)? Ci dirà su quale riga si è verificato l'errore "AttributeError". – unutbu