dev*_*v ツ 0 python mocking python-unittest
@patch('module1.api.method1')
@patch('module1.api.method2')
class TestApi(unittest.TestCase):
@patch('module1.api.connec1')
@patch('module1.api.connec2')
def test_some_method(self, mockMethod1, mockMethod2,
mockConnec1, mockConnec2):
# some code.....
Run Code Online (Sandbox Code Playgroud)
测试方法中提到的模拟对象的顺序是否应该与patch? 我们是否需要提及所有类级别和方法级别补丁的模拟对象?
如果有 20 个补丁对象,方法会一样吗?
从补丁文档:
当您嵌套补丁装饰器时,模拟将按照它们应用的相同顺序(应用装饰器的正常 Python 顺序)传递给被装饰的函数。这意味着自下而上
所以你的代码中的正确顺序是:
@patch('module1.api.method1')
@patch('module1.api.method2')
class TestApi(unittest.TestCase):
@patch('module1.api.connec1')
@patch('module1.api.connec2')
def test_some_method(self, mockConnec2, mockConnec1, mockMethod2, mockMethod1):
# some code.....
Run Code Online (Sandbox Code Playgroud)
如果你有很多这样的模拟并且你不需要在每个模拟中做任何事情(比如定义 side_effect 等),*args为了简洁起见,你可以把它们汇总起来。
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |