示例#1
0
 def test3(self):
     x = 1
     p = patch('mymodule.func')
     mock_func = p.start()
     mymodule.func(x)
     mock_func.assert_called_with(x)
     p.stop()
示例#2
0
问题
你写的单元测试中需要给指定的对象打补丁,用来断言它们在测试中的期望行为
(比如,断言被调用时的参数个数,访问指定的属性等)。

解决方案
unittest.mock.patch() 函数可被用来解决这个问题。 patch() 还可被用作一个
装饰器、上下文管理器或单独使用,尽管并不常见。

"""
import unittest
from unittest.mock import patch
import mymodule


with patch('mymodule.func') as mock_func:
    res = mymodule.func(42)
    mock_func.assert_called_with(42)


sample_data = {
        'IBM': 91.1,
        'AA': 13.25,
        'MSFT': 27.72
    }


class Tests(unittest.TestCase):

    @patch('mymodule.dow_prices', return_value=sample_data)
    def test_dow_prices(self, mock_urlopen):
        p = mymodule.dow_prices()
示例#3
0
def test_import():
    import mymodule
    mymodule.x  # $tracked
    y = mymodule.func()  # $tracked
    y  # $tracked
    mymodule.z  # $tracked
示例#4
0
# option 1 ##################
from mymodule import func
func()
#############################

# option 2 ##################
# import mymodule
# mymodule.func()
#############################

# option 3 ##################
# from mymodule import *
# func()
#############################
示例#5
0
import mymodule as mm
#Alternative
#from mymodule import func, version
#from mymodule import *

mm.func(3)
mm.func(4)
print 'Version of mm(mymodule):', mm.version
示例#6
0
 def test2(self):
     x = 1
     with patch('mymodule.func') as mock_func:
         mymodule.func(x)
         mock_func.assert_called_with(x)
示例#7
0
 def test1(self, mock_func):
     x = 1
     mymodule.func(x)
     mock_func.assert_called_with(x)