Python 模拟测试中的特定方法不起作用
我正在使用Python 3.5.2。我试图在不同的测试用例下模拟相同的方法,但似乎Python 模拟测试中的特定方法不起作用,python,python-unittest,Python,Python Unittest,我正在使用Python 3.5.2。我试图在不同的测试用例下模拟相同的方法,但似乎sys.argv没有得到模拟 我还尝试使用@patch装饰器,但没有效果 main.py: 从操作系统导入路径 从系统导入argv 全局={} def get_target_dir(): 如果len(argv)
sys.argv
没有得到模拟
我还尝试使用@patch
装饰器,但没有效果
main.py
:
从操作系统导入路径
从系统导入argv
全局={}
def get_target_dir():
如果len(argv)<2或路径不存在(argv[1]):
print(“必须将实例目录的有效完整路径指定为命令行参数。”)
出口(1)
全局变量['TARGET_DIR']=argv[1]+('/'如果argv[1][1]!='/'其他')
tests.py
:
导入单元测试
从unittest.mock导入修补程序
从主导入获取\u目标\u目录,全局
类TestMain(unittest.TestCase):
def test_CORPORT_target_dir(自我):
argv=[None',/test']
使用补丁('sys.argv',argv',补丁('os.path.exists',lambda:True):
获取\u目标\u目录()
断言全局变量['TARGET_DIR']==argv[1]+'/'
def测试\u无效\u目标\u目录(自身):
argv=[无,'/']
使用修补程序('sys.argv',argv),修补程序('os.path.exists',lambda:False):
尝试:
获取\u目标\u目录()
除系统退出外:
断言正确
其他:
断言错误
当我运行测试时,由于上面的问题,它们不能按预期工作。我意识到我不知道,所以我错误地将
sys.argv
方法包含在main.py
-将导入从sys import argv
替换为刚才的import sys
(并进一步将sys.
放在argv
的前面)一切都开始工作了