繁体   English   中英

如何在 python 中模拟生成器

[英]How to mock a generator in python

我有一个生成yields a string值的生成器,在我的主 app.py 中使用它们。

现在我想创建 pytest 并尝试为这个生成器创建一个补丁,我没有运气。 谁能建议更好的工作方法? 我关注了 StackOverflow 之前的问题和解决方案,但仍然没有设法完成它。

def test_index_route():
    with patch("main._method") as mock_method:
        mock_method.iter.return_value = iter(['1234'])
        response = app.test_client().get('/')

        assert response.status_code == 200
        assert response.data.decode('utf-8') == 'hello world version 1234.' 

这给出了 assert failed as E assert "hello wo R...0854476448'>." == 'hello world version 1234.' E assert "hello wo R...0854476448'>." == 'hello world version 1234.' hello world version <MagicMock name='_version_if_file_exists().__next__()' id='140400854476448'>.

mock.method.return_value = iter(['1234'])

这是一个谎言,但 Python 以相同的方式对待返回迭代器的生成器和函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM