繁体   English   中英

如何在导入前导入需要命令行 arguments 的 python 脚本?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM