Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用pythonmock断言方法调用顺序?_Python_Mocking - Fatal编程技术网

如何使用pythonmock断言方法调用顺序?

如何使用pythonmock断言方法调用顺序?,python,mocking,Python,Mocking,假设我有一个python函数 def func(self): self.method_1() self.method_2() 我如何编写一个单元测试来断言方法_1在方法_2之前被调用 @mock.patch(method_1) @mock.patch(method_2) def test_call_order(method_2_mock, method_1_mock): # Test the order 你的情况与我的情况略有不同。您应该做的是将method\u 2

假设我有一个python函数

def func(self):
    self.method_1()
    self.method_2()
我如何编写一个单元测试来断言方法_1在方法_2之前被调用

@mock.patch(method_1)
@mock.patch(method_2)
def test_call_order(method_2_mock, method_1_mock):
     # Test the order

你的情况与我的情况略有不同。您应该做的是将
method\u 2\u mock
method\u 1\u mock
设置为一个新mock对象的子对象,然后请求
mock\u calls
属性或使用
assert\u has\u calls

@mock.patch(method_1)
@mock.patch(method_2)
def test_call_order(method_2_mock, method_1_mock):
    mock_parent = Mock()
    mock_parent.m1, mock_parent.m2 = method_1_mock, method_2_mock
    <test code>
    """Check if method 1 is called before method 2"""
    mock_parent.assert_has_calls([call.m1(), call.m2()])
@mock.patch(方法1)
@模拟补丁(方法2)
def测试调用顺序(方法2模拟、方法1模拟):
mock_parent=mock()
mock\u parent.m1,mock\u parent.m2=方法1\u mock,方法2\u mock
“”“检查是否在方法2之前调用了方法1”“”
mock_parent.assert_有_调用([call.m1(),call.m2()])
这段代码中省略了很多细节,比如调用参数。看一看和非常有用的助手

注意
这仅对python3中的
unitetest.mock
有效。对于Python2.7和mock 1.0.1,您应该使用
attach\u mock

我认为您缺少了“before”一词。。。你读过吗?