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

时间:2012-04-12 22:38:45

标签: python

我正在为接受命令行参数的模块编写unittest。我在模块中使用了optparse来接受args。

所以当我直接执行模块时,我只需输入: -

module.py -e 42 -g 84

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

instance = module.className()
instance.method()

有人可以告诉我如何将命令行args从另一个模块(例如unittest)传递给module.py吗?

我在unittest中使用optparse并在生成module.py实例时以某种方式合并吗?

提前致谢。

2 个答案:

答案 0 :(得分:4)

您只需修改代表命令行参数列表的列表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)

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

答案 1 :(得分:1)

三种选择:

1)使用一些shell,而不是固定在100%Python上。

2)根据需要传递sys.argv(也许是一个类似的矢量)

3)调用命令行选项调度程序调用的函数