python - 可以对函数体中引入的局部变量进行猴子补丁吗?

标签 python python-3.x pytest

py.test monkeypatching/mocking documentation这没有提到,但是可以对函数体中引入的局部变量进行猴子补丁吗?

我的实验:

def my_method():
    my_var = 'foo'
    return my_var[:2]

测试是:
def test_my_method(monkeypatch):
    monkeypatch.setattr(my_module.MyClass.my_method.my_var, lambda: 'bar')
    assert my_method() == 'ba'

AttributeError: 'function' object at MyClass.my_method has no attribute 'my_var'

最佳答案

这是不可能的,因为该变量提前不存在,而且据我所知 py.test 无法 Hook 局部变量的创建。

关于python - 可以对函数体中引入的局部变量进行猴子补丁吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40997705/

相关文章:

python - 如何为多个测试打补丁

python - pytest 在参数化中使用固定装置作为参数

python - 无法访问 Python 中对象内的列表

python - 使用 applescript (重新)启动 python 脚本

python - 如何确保 random.choice() 不会选择同一项目两次?

python - 如何将字符串数据框列转换为日期时间作为带有年和周的格式?

python - pytest:给定异常 x 失败,否则通过

python - 在 FTP 服务器上获取 zip 文件中的文件名,而无需下载整个存档

python - Python 中数字的处理

python - flake8 没有在用户目录中获取全局配置文件