1. mock function
@patch('file.module.function', Mock(return_value=True)
def test_xxx(self):
self.assertEqual(testFun(), True)
2 mock class instance
如果bar()回傳的是Class Bar的instance的話, 就使用magicmock, magicmock會自動mock class的method
myMock = mock.MagicMock()
@patch('file.module.bar', Mock(return_value=myMock)
def test_xxx(self):
self.assertEqual(testFun(), True)
3.
假設Bar有一個method toString()
def foo():
x = Bar()
x.toString()
myMock = mock.MagicMock()
myMock.toString.return_value = 'bar'
@patch('file.module.bar', Mock(return_value=myMock)
def test_xxx(self):
self.assertEqual(testFun(), True)
4. patch dict
class FooTest(unittest.testcase):
def setUp(self):
patches = {
'app.a.bar', Mock(),
'app.b.bar', Mock(),
}
[mock.patch(func, mock).start() for func, mock in patches.items()]
5 fixture
>>>> conftest.py <<<<
import pytest
@pytest.fixture(scope=session)
def init_test_env():
os.append()