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)
我在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)