簡體   English   中英

生成器返回的Mocks失敗assert_calld_with

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM