Tôi có một tập lệnh thực hiện nhiều thứ khác nhau và truy cập vào các paramenters bằng sys.argv nhưng khi tập lệnh chuyển đến phần không mã nhất của mã nó nói không có mô-đun cho việc này. Tập lệnh mà tôi có là:Vấn đề với sys.argv [1] khi mô-đun unittest nằm trong tập lệnh
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)
Nói tôi nhập ./script.py Hello
vào dòng lệnh. Lỗi tôi nhận được là:
AttributeError: 'module' object has no attribute 'Hello'
Nếu tôi xóa mô-đun không kích hoạt, nó hoạt động. Ngoài ra, nếu tôi xóa nhật ký thử nghiệm và để nó tại:
unittest.main(defaultTest='Run.suite')
Điều này vẫn không hoạt động.
Bất kỳ ai cũng có thể trợ giúp.
Cảm ơn
Tôi đã thử bản hack này nhưng vẫn cố đọc sys.argv
.
project = sys.argv[4:]
sys.argv = sys.argv[0:4]
Tôi đã thử điều này chỉ với argv
nhưng vẫn cố gắng đọc các thông số bổ sung.
Bạn có thể đăng thông báo lỗi đầy đủ (với stack trace)? Nó sẽ cho chúng ta biết dòng 'AttributeError' đã xảy ra. – unutbu