pyunit mock sys.argv在其他文件中

时间:2017-06-07 23:12:16

标签: python unit-testing mockito parameter-passing

我有一个这样写的python文件:

import sys
cfgfile = sys.argv[1]
cfg = ConfigObj(cfgfile)
db_dbname=cfg.get("DB_NAME")
class UserMappingsLoader:
    def __init__(self):
        self.debug = 0
        self.cuStartTime = 0
        self.fiId = 0

我想编写一个pyunit来测试此代码中的一个方法。但是当我运行我的测试代码时,它会显示:

cfgfile = sys.argv[1]
list index out of range

任何人都知道如何将sys.argv从测试文件模拟到此文件?

1 个答案:

答案 0 :(得分:3)

您可以使用mock模块中的patch执行此操作。这是一个例子:

from mock import patch

def test_your_function():
    fake_args = [None, "myfakearg"]
    with patch('sys.argv', fake_args):
        import yourmodule
        # rest of your test