Python,如果方法是从另一个 class 调用的,则无法断言

Python, can't assert if method called from another class

我在Python中有以下代码:

class A():
    def doSomething(self, bClass):
        print(bClass.theThing)

class B():
    def __init__(self, theThing):
        self.theThing = theThing

def foo():
    a = A()
    b = B("that thing")
    a.doSomething(b)

我有那些 类 和函数 foo() 存储在 testing.py 中,我想测试 A 的方法是否被调用:

import testing, unittest
from unittest.mock import patch

class TheTestClass(unittest.TestCase):
    def test(self):
            with patch('testing.A.doSomething') as do:
                testing.foo()
                do.assert_any_call()

但我总是得到 'doSomething() call not found'。如果我能理解为什么我会更开心但是在这一点上欢迎任何事情

几个小时后,我开始弄明白了。 就像 jwjhdev 说的 assert_called_with() 期望一些东西,在我的例子中是 class 但 assert_any_call() 也是如此。出于某种原因,我在想 assert_any_call() 会正常工作,但我在想的是 assert_called() 没有参数就可以正常工作。最后我通过在 foo() 函数中添加 return b 和:

来解决这个问题
def foo():
    a = A()
    b = B("that thing")
    a.doSomething(b)
    return b
class TheTestClass(unittest.TestCase):
    def test(self):
            with patch('testing.A.doSomething') as do:
                b = testing.foo()
                do.assert_any_call(b)