7

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

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

module.py -e 42 -g 84

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

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

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

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

提前致谢。

4

2 回答 2

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)

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

于 2012-04-12T23:58:18.893 回答
1

三种选择:

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

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

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

于 2012-04-12T22:56:05.623 回答