[英]Generator returning Mocks that fail assert_called_with
我正在嘗試測試這樣組織的腳本:
class Processor(object):
def __init__(self, *args):
pass
def my_iterator(elements):
for element in elements:
yield Processor(element)
我只想測試是否使用傳遞給my_iterator()
的iterable中的每個元素創建了Processor對象。
我正在分別測試Processor
,所以我為my_iterator()
編寫了一個測試,如下所示:
import mock
from mymodule import my_iterator
class TestMyIterator(object):
@mock.patch('mymodule.Processor')
def test_my_iterator(self, ProcessorMock):
vals = range(3)
g = my_iterator(vals)
for idx, item in enumerate(g):
item.assert_called_with(vals[idx])
但是,當我運行測試(使用鼻子測試)時,它告訴我該item
根本沒有被調用。 my_iterator()
產生一個元素時不應該調用它嗎?
當迭代器產生一個項目時,將調用ProcessorMock
來產生該項目,但是永遠不會調用該項目本身。 與其斷言該item
被調用,不如對ProcessorMock
進行斷言:
ProcessorMock.assert_called_with(vals[idx])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.