Tengo un script que hace varias cosas y accede a los parámetros usando sys.argv pero cuando el script llega a la parte unittest del código dice que no hay módulo para esto. El script que tengo es:Problema con sys.argv [1] cuando el módulo unittest está en un 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
en la línea de comandos. El error que recibo es:
AttributeError: 'module' object has no attribute 'Hello'
Si elimino el módulo unittest, funciona. Además, si elimino el registro testrunner y lo dejo en:
unittest.main(defaultTest='Run.suite')
Esto todavía no funciona.
¿Alguien puede ayudar.
Gracias
Probé este truco pero todavía intenta leer el sys.argv
.
project = sys.argv[4:]
sys.argv = sys.argv[0:4]
He intentado esto con sólo argv
pero todavía neumáticos para leer los parámetros extra.
¿podría enviar el mensaje de error completo (con el seguimiento de la pila)? Nos dirá en qué línea se produjo 'AttributeError'. – unutbu