下面是我要测试的代码
if os.path.exist(path_one):
func1()
elif os.path.exist(path_two):
func2()
在编写单元测试时。我想
模拟第一个os.path.exist返回flase,以便不执行func1
模拟第二个os.path.exist返回true,以便执行func2
但是我没有找到一种方法来模拟相同func os.path.exist的不同返回
一种方法是将其 Package 成不同的func和mock。但我不想因为unittest而这样做。有什么好主意吗?
1条答案
按热度按时间yjghlzjz1#
您可以将patch()方法用于
side_effect
.每当调用mock时要调用的函数。请参见“副作用”属性。用于引发异常或动态更改返回值。
例如
main.py
:from main import main
from unittest import TestCase, mock
import unittest
class TestMain(TestCase):
@mock.patch('main.os.path.exists')
def test_main(self, mock_exists):
def side_effect(path):
if(path == 'path_one'):
return False
if(path == 'path_two'):
return True
if name == 'main':
unittest.main()
func2
.
Ran 1 test in 0.001s
OK