我正在为接受命令行参数的模块编写unittest。我在模块中使用了optparse来接受args。
所以当我直接执行模块时,我只需输入: -
module.py -e 42 -g 84
到目前为止,在我的unittest中我只是创建了一个模块实例来测试然后调用一个特定的方法: -
instance = module.className()
instance.method()
有人可以告诉我如何将命令行args从另一个模块(例如unittest)传递给module.py吗?
我在unittest中使用optparse并在生成module.py实例时以某种方式合并吗?
提前致谢。
答案 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)调用命令行选项调度程序调用的函数