将需要系统参数的 Python 脚本导入单元测试

Importing a Python script that requires system arguments into unit test

我有一个 Python 文件,我们称它为 script1.py。我正在尝试编写一个名为 script1_test.py 的单元测试(使用 unittest)。 script1 旨在从命令行调用并接受一些参数。当脚本 1 为 运行 时,它开始于:

if __name__ == "__main__" and len(sys.argv) == 6:
    func1()
else
   print "Wrong number of arguments"
   sys.exit(1)

我只是想在 script1 中执行和测试一个函数(这里称为 func1) 独立于代码主体。但是当我这样做时,我在导入阶段一直从 main 中点击 sys.exit 。我怎样才能 运行 测试而不遇到这个错误?

当您导入脚本时,__name__ 不等于 main,因此您正在调用 else 块。相反,您应该嵌套 if 块:

if __name__ == "__main__":
    if len(sys.argv) == 6:
       func1()
    else:
       print "Wrong number of arguments"
       sys.exit(1)