具有不完整呼叫清单的Python Mock呼叫顺序

问题描述

我的目标是找出在一个对象的另一个函数之前是否先调用了一个对象的函数。

class A:
    def foo( self ):
       ...

    def foo2( self ):
       ...

class B:
    def goo( self ):
       ...

class C:
    def func( self,a: A,b: B ):
       a.foo()
       a.foo2()
       b.goo()

通过单元测试,我想知道是否在a.foo()之前调用了b.goo()。 我已经在下面的代码中尝试过它,但是显然,它没有用,因为在它们之间有a.foo2()被取消了。

class SomeTests( unittest.TestCase ):
    def test_callOrder( self ):
        aMock = Mock()
        bMock = Mock()
        topMock = Mock()
        topMock.attach_mock( aMock,'a' )
        topMock.attach_mock( bMock,'b' )

        c = C()
        c.func( aMock,bMock )    

        expectedCalls = []
        expectedCalls.append( call.a.foo() )
        expectedCalls.append( call.b.goo() )
        topMock.assert_has_calls( expectedCalls,any_order=False )

我该如何忽略对a.foo2()的调用,而只将断言集中在a.foo()b.goo()上?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)