monkeypatching相关内容

猴子补丁 Python 类

我有一个类,位于单独的模块中,我无法更改. from module import MyClass类替换类(对象)...我的类 = 替换类 除了这个文件之外,这不会改变 MyClass 的任何其他地方.但是,如果我要添加这样的方法 def bar():打印 123MyClass.foo = bar 这会起作用,并且 foo 方法将在其他任何地方都可用. 如何完全替换类? 解决方案 ..
发布时间:2021-06-25 19:46:15 Python

什么是猴子补丁?

我想了解,什么是猴子补丁或猴子补丁? 这是否类似于方法/运算符的重载或委托? 这些东西有什么共同点吗? 解决方案 不,它不像任何这些东西.它只是在运行时动态替换属性. 例如,考虑一个具有方法 get_data 的类.此方法执行外部查找(例如,在数据库或 Web API 上),类中的各种其他方法调用它.但是,在单元测试中,您不想依赖外部数据源 - 因此您将 get_data ..
发布时间:2021-06-25 18:57:08 Python

如何在pytest中使用monkeypatch或mock删除库?

如果我的库有一个 contrib 额外的依赖项(比如 requests),我希望用户必须安装它才能访问 CLI API,但是我在 CI 中的测试期间安装了 contrib extra 如何使用 pytest 的 MonkeyPatch 在测试过程中删除依赖以确保我的检测正确? 例如,如果 contrib extra 将额外安装 requests 所以我希望用户必须这样做 $ python ..
发布时间:2021-06-25 18:52:09 Python

猴子补丁没有通过类导入

我正在尝试使用 pytest 测试一些代码,并且需要更改某个模块中的函数.我的一个导入也导入了该函数,但是当我使用 monkeypatch 更改方法时,这会失败.这是我所拥有的: util.py def foo():raise ConnectionError # 模拟一个错误返回“酒吧" something.py from proj import utilneed_this = uti ..
发布时间:2021-06-25 18:51:50 Python

鸭子在python中的一个属性中打孔

我希望能够添加一个属性 http://docs.python.org/library/functions.html#property 到一个对象(类的特定实例).这可能吗? 关于在python中打鸭子/猴子补丁的一些其他问题: 向现有对象实例添加方法 Python:在运行时更改方法和属性 更新:由 delnan 在评论中回答 在python中动态添加@property ..
发布时间:2021-06-22 19:35:31 Python

如何动态地向类添加属性?

目标是创建一个行为类似于数据库结果集的模拟类. 例如,如果一个数据库查询返回,使用一个dict表达式,{'ab':100, 'cd':200},那么我想看到: >>>虚拟文件100 起初我想也许我可以这样做: ks = ['ab', 'cd']vs = [12, 34]C类(字典):def __init__(self, ks, vs):对于 i, k in enumerate(ks ..
发布时间:2021-06-22 19:31:36 Python

你能在 Python 的核心类型上猴子补丁方法吗?

Ruby 可以向 Number 类和其他核心类型添加方法以获得如下效果: 1.should_equal(1) 但似乎 Python 无法做到这一点.这是真的?如果是这样,为什么?和type不能修改有关系吗? 更新:与其讨论猴子补丁的不同定义,我只想关注上面的示例.我已经得出结论,正如你们中的一些人所回答的那样,这是不可能的.但我想更详细地解释为什么不能这样做,也许什么特性(如果在 Pyt ..

PC寄存器上的ARM LDR指令

以下是我对故事的理解: PC 寄存器保存指向下一条指令的指针 LDR 指令正在将第二个操作数的值加载到第一个操作数中(例如) LDR r0, [pc, 0x5678] 相当于这个“C代码" r0 = *(pc + 0x5678) 它是使用基址偏移取消引用指针. 还有我的问题: 我找到了这个代码 LDR PC, [PC,-4] 它被评论为猴子补丁等. 我如何 ..
发布时间:2021-06-14 20:07:14 其他开发

如何拦截使用文字表示法创建的 unknwon 对象的已知属性值分配

这个问题是我在这里问的另一个问题的延续:如何拦截和修改任何对象的特定属性 这是一种用于拦截某个名称的任何对象的属性的方法,目的是在分配或读取时更改值或执行某个操作: Object.defineProperty(Object.prototype, "my_property", {设置:函数(值){this._value = 值;},得到:函数(){返回“改变";}});var some_ ..
发布时间:2021-06-11 19:40:21 前端开发

扩展类(Monkey Patching)如何在 Python 中工作?

class Foo(object):经过foo = foo()定义栏(自我):打印“酒吧"Foo.bar = 酒吧foo.bar() #bar 来自 JavaScript,如果“类"原型增加了某个属性.众所周知,该“类"的所有实例都将在其原型链中具有该属性,因此无需对其任何实例或“子类"进行修改. 从这个意义上说,像 Python 这样的基于类的语言如何实现 Monkey 补丁? 解 ..
发布时间:2021-06-11 19:31:41 Python

如何使用pytest测试无限while循环

我目前正在编写一个与竹构建服务器交互的小库.测试是使用 pytest 完成的.我陷入了以下问题.我想测试一个运行直到满足某些状态的 while 循环.阅读 pytest 文档,我试图“模拟"/monkeypatch 状态,但它并没有真正起作用.我可能在这里做错了一些基本的错误:这是有问题的while循环: # 判断当前状态运行 = self._is_a_build_running()# 在构建 ..
发布时间:2021-06-03 18:41:28 Python

是否可以赋予javascript偏类行为(如C#)或像Ruby那样进行猴子修补?

部分类背后的想法是,您可以将某些功能组合在一起.在C#中最好的例子是将控件定义放在一个文件中,将事件处理程序放在另一个文件中.在Ruby中,您可以使用Monkey修补程序来替换整个函数等,以使代码完成您想要做的事情. 我还没有找到这样做的理由,但是随着网络的发展,我认为更多的应用程序将在客户端,因此我想知道我在服务器中是否找到了一些很棒的功能-其他语言,我也可以在Java语言中使用. ..
发布时间:2021-05-19 20:04:34 前端开发

如何在自定义Object.prototype.xxx函数中获取对象本身?

Object.prototype.getB = function(){//如何获取当前值返回a.b;};const a = {b:'c'};a.getB(); 如您所见,我想为所有Object值创建一个函数.我需要在此函数中获取对象值,然后执行某些操作. 解决方案 猴子修补 您要执行的操作称为猴子补丁-您将内置原型进行了变异.这样做有很多错误的方法,但我将演示一种当前最正确的方 ..
发布时间:2021-05-19 18:55:11 前端开发

WebExtension中的猴子补丁getUserMedia?

我要做什么: 这里的第一个问题,对于任何错误深表歉意. 基本上我想做的是为网络摄像头实现过滤器,以便与您进行视频会议/通话/会议的每个人都可以在网络摄像头打开的情况下看到它.我的第一个想法是使用CSS过滤器,这在事后看来是愚蠢的,因为不会被所有人看到. 然后,我进行了一些研究(例如,谷歌搜索),发现了一个类似的WebExtension,ZomboCam(我用crxviewer看到 ..

如何模拟装饰函数

出于测试的原因,我需要能够模拟在其他地方使用的装饰功能的内部/原始功能: 在mydecorator.py中: def my_decorator(f): def wrap_f(): 打印“已装饰” f () return wrapd_f @my_decorator def function_to_be_mocked(): 打印'原始' def funct ..
发布时间:2020-10-19 20:39:11 Python

追踪Python 2中的隐式unicode转换

我有一个大型项目,其中在各个地方使用以下形式存在问题的隐式Unicode转换(强制转换): someDynamicStr =” bar“#可能来自各种来源 #作品 u” foo“ + someDynamicStr u” foo {} “ .format(someDynamicStr) someDynamicStr =” \xff“#哦,哦 #引发UnicodeDecodeE ..
发布时间:2020-10-19 05:42:41 Python