如何将命令行参数从一个 python 模块传递到另一个

use*_*462 6 python

我正在为接受命令行参数的模块编写单元测试。我在模块中使用 optparse 来接受参数。

因此,当我直接执行模块时,我只需键入:-

module.py -e 42 -g 84
Run Code Online (Sandbox Code Playgroud)

到目前为止,在我的单元测试中,我只是创建了一个模块实例来测试然后调用一个特定的方法:-

instance = module.className()
instance.method()
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我如何将命令行参数从另一个模块(例如单元测试)传递给 module.py 吗?

我是否在我的单元测试中使用 optparse 并在生成 module.py 实例时以某种方式合并?

提前致谢。

小智 7

您只需要修改sys.argv代表命令行参数列表的列表。这个列表对 python 解释器是全局的,所以你不必传递它。

import sys
from optparse import OptionParser

parser = OptionParser()
parser.add_option("-e")
parser.add_option("-g")

print sys.argv # unmodified
(options, args) = parser.parse_args()
print (options, args)

sys.argv = ['module.py','-e','42','-g','84'] # define your commandline arguments here

(options, args) = parser.parse_args()
print (options, args)
Run Code Online (Sandbox Code Playgroud)

注意:不推荐使用 OptionParser 模块,因此如果可能,argparse请切换到(请参阅:http ://docs.python.org/library/argparse.html#module-argparse )。您只需要 Python 2.7。