У меня есть сценарий, который выполняет различные действия и обращается к параметрам с помощью sys.argv, но когда сценарий достигает части кода unittest, он говорит, что для этого нет модуля. У меня есть сценарий:
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)
Скажем, я ввожу ./script.py Hello
в командную строку. Я получаю следующую ошибку:
AttributeError: 'module' object has no attribute 'Hello'
Если я удалю модуль unittest, он заработает. Также, если я удалю журнал testrunner и оставлю его по адресу:
unittest.main(defaultTest='Run.suite')
Это все еще не работает.
Кто-нибудь может помочь.
Спасибо
Я пробовал эту хитрость, но она все еще пытается прочитать sys.argv
.
project = sys.argv[4:]
sys.argv = sys.argv[0:4]
Я пробовал это с argv
, но читать лишние параметры все равно утомительно.
AttributeError
. - person unutbu   schedule 11.05.2010