日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

材料模拟python_用Python模拟无限生成器

發(fā)布時(shí)間:2025/3/20 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 材料模拟python_用Python模拟无限生成器 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

我正在嘗試使用模擬庫(kù)模擬無(wú)限生成器函數(shù). (如果您使用Python 3.3,則為unittest.mock)

這是無(wú)限生成器的最小工作示例.如果我可以成功地模擬它,那么我希望能夠模擬我正在使用的實(shí)際功能.

import itertools

def infinite_generator():

thing = itertools.cycle([1, 2])

while True:

yield next(thing)

到目前為止,這是我嘗試過(guò)的:

import mock

import itertools

mock_func = mock.MagicMock()

mock_func.__iter__.return_value = itertools.cycle([1, 2])

我想讓mock_func與infinite_generator函數(shù)完全一樣.

例如我希望能夠做到以下幾點(diǎn):

>>> a = mock_func()

>>> next(a)

1

>>> next(a)

2

>>> next(a)

1

>>> next(a)

2

等等

但是,此刻next(a)返回類(lèi)似

< MagicMock名稱(chēng)='mock().__ next __()'id ='3043937712'>

解決方法:

在這里省略__iter__,因?yàn)槟淮蛩惚闅v嘲笑對(duì)象本身:

mock_func.__iter__.return_value = itertools.cycle([1, 2])

代替:

>>> mock_func = mock.Mock()

>>> mock_func.return_value = itertools.cycle([1, 2])

>>> a = mock_func()

>>> next(a)

1

>>> next(a)

2

>>> next(a)

1

>>> next(a)

2

標(biāo)簽:python-unittest,unit-testing,mocking,python-3-x,python

來(lái)源: https://codeday.me/bug/20191121/2053409.html

總結(jié)

以上是生活随笔為你收集整理的材料模拟python_用Python模拟无限生成器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。