我的目标是找出一个对象的函数是否在另一个对象的另一个函数之前被调用
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()
上呢
由于没有对此进行具体检查,您必须执行两个测试:首先检查两个函数是否都被调用,然后检查它们是否按正确的顺序被调用:
如果函数被调用,那么无论顺序如何,第一次调用(
assert_has_calls
和any_order=True
)都将成功,并且其间的其他调用也是如此。第二个检查依赖于mock_calls
属性,如果没有适当的便利函数,该属性允许进行更多检查相关问题 更多 >
编程相关推荐