Lets say you have a module named awesome.py and in it, you had:
import time
class SomeProductionProcess(CustomCachedSingleTon):
    def loaddata(self):
        time.sleep(30) # simulating a long running process
        return 2
Then your unittest where you mock loaddata could look like this:
import unittest
import awesome # your application module
class TestSomeProductionProcess(unittest.TestCase):
    """Example of direct monkey patching"""
    def test_loaddata(self):
        some_prod_proc = awesome.SomeProductionProcess()
        some_prod_proc.loaddata = lambda x: 2 # will return 2 every time called
        output = some_prod_proc.loaddata()
        expected = 2
        self.assertEqual(output, expected)
Or it could look like this:
import unittest
from mock import patch
import awesome # your application module
class TestSomeProductionProcess(unittest.TestCase):
    """Example of using the mock.patch function"""
    @patch.object(awesome.SomeProductionProcess, 'loaddata')
    def test_loaddata(self, fake_loaddata):
        fake_loaddata.return_value = 2
        some_prod_proc = awesome.SomeProductionProcess()
        output = some_prod_proc.loaddata()
        expected = 2
        self.assertEqual(output, expected)
Now when you run your test, loaddata wont take 30 seconds for those test cases.