python - 在模拟中修补生成器

标签 python unit-testing mocking

我正在尝试为我的单元测试创​​建生成器方法的模拟版本。设置返回值很简单:

    patcher = unittest.mock.patch.multiple("__main__.MyClass",
        method_one=DEFAULT,
        ...
    )
    patcher.start()
    MyClass.method_one.return_value = my_mock_gen(some_params)

但是这只会工作一次并且每次都必须重新设置:

    for value in my_obj.method_one(some_params):
        # do stuff with value

    my_obj.method_one.reset_mock() # doesn't work with `yield from` as well

另外,我无法根据 some_params 生成模拟值。是否有一种我缺少的处理这种情况的首选方法?

最佳答案

如果你想在调用 mock 时运行一个函数,那就是 side_effect ,而不是 return_value:

MyClass.method_one.side_effect = my_mock_gen

关于python - 在模拟中修补生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48546000/

相关文章:

reactjs - 方法 “simulate” 旨在在 1 个节点上运行。 0 找到了。 - Jest/ enzyme

java - 使用模拟对象时测试粒度

python - 无法将列表导入 MySQL - Python、Tweepy 和 MySQL.Connector

Python 正则表达式没有按预期工作

ios - Swift:使用抛出异常的函数进行单元测试

spring-boot - 我如何使用 mock 测试 OAuth2 资源服务器

java - 正在测试的同一类中的模拟私有(private)方法

python - 反转数组的比例

python - 如何在Python中将日期转换为毫秒

c# - 如何在单元测试中删除陈旧的 DeploymentItems?