sys.argvを使用してさまざまなことを実行し、パラメーターにアクセスするスクリプトがありますが、スクリプトがコードの単体テスト部分に到達すると、このためのモジュールがないと表示されます。私が持っているスクリプトは次のとおりです。
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モジュールを削除すると、機能します。また、テストランナーログを削除して、次の場所に残しておくと、次のようになります。
unittest.main(defaultTest='Run.suite')
これはまだ機能しません。
誰でも助けることができます。
ありがとう
私はこのハックを試しましたが、それでもを読み込もうとしますsys.argv
。
project = sys.argv[4:]
sys.argv = sys.argv[0:4]
私はこれを試してみましたargv
が、それでも余分なパラメータを読み取るのは面倒です。