[英]How import python script that requires command line arguments before importing?
您好我正在尝试对需要命令行 arguments 的 python 脚本进行单元测试。 这个 class 是 AWS 粘合作业,但仍然是纯 python。
这是我的单元测试:
import sys
import unittest
import src.UnzipFile # Fails Here
class TestUnzipFile(unittest.TestCase):
def test_unzipping_file(self):
"""
Tests that it can unzip a tar.gz file
"""
if __name__ == "__main__":
try:
unittest.main()
except Exception:
TestUnzipFile().tearDownClass()
这是我尝试导入的脚本的开头(短版):
args = getResolvedOptions(sys.argv,
[
's3_bucket',
'archive_path',
'destination_path',
])
bucket_name = args['s3_bucket']
tar_file_path = args['archive_path']
if __name__ == "__main__":
main()
尝试导入脚本后出现以下错误:
awsglue.utils.GlueArgumentError: the following arguments are required: --s3_bucket, --archive_path, --destination_path,
没有很多关于 AWS 粘合作业单元测试的文档,并且当设置粘合作业时,您不能使用环境变量。 无论您想使用什么参数,都必须是 arguments。 所以我的问题变成了如何导入需要传入 arguments 的 python 脚本?
请参阅本文档中的第 5 步。 他确实遇到了确切的问题,并且有一个解决方法,您需要将 Glue 端代码放入 function 并编写以下代码,以便仅在将其自己的代码作为入口点调用时才执行它,如下所示:
if __name__ == '__main__':
main(sys.argv)
PS:博客是日文的,您可以将其转换为英文以更好地理解它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.