不,这与这些东西都不一样。它只是在运行时动态替换属性。
例如,考虑一个具有method的类get_data。该方法进行外部查找(例如,在数据库或Web API上),并且类中的各种其他方法都调用它。但是,在单元测试中,您不希望依赖于外部数据源-因此,您可以用get_data存根(返回一些固定数据)动态替换该方法。
因为Python类是可变的,并且方法只是类的属性,所以您可以随意执行此操作-实际上,您甚至可以以完全相同的方式替换模块中的类和函数。
但是,正如评论员指出的那样,在进行猴子修补时要格外小心:
如果除了测试逻辑调用之外还有其他要求get_data,它还会调用猴子修补的替代品,而不是原始替代品-可能是好是坏。提防。
如果存在一些变量或属性get_data,但在替换时该变量或属性也指向该函数,则该别名不会更改其含义,并且将继续指向原始get_data。(为什么?Python只是get_data将类中的名称重新绑定到其他函数对象;其他名称绑定完全不受影响。)
问题内容: 什么是selenium? 当您打开Selenium的官方页面时,您首先读到的是“什么是Selenium?”中的“ Selenium automates browser”。部分。“selenium的哪个部分适合我?”部分 下面提供了Selenium WebDriver和Selenium IDE之间的选择。由此,我推断出Selenium是一组工具,并且该集合包括IDE,WebDriver
硒是什么? 当你打开Selenium的官方页面,首先看到的是“什么是Selenium”中的“Selenium自动浏览器”。节。“硒的哪一部分对我合适?”下面提供了Selenium WebDriver和Selenium IDE之间的选择。由此,我推断Selenium是一个工具集合,该集合包括IDE、WebDriver API(语言绑定)、网格、Selenium独立服务器、浏览器驱动程序。一个人必须下
问题内容: 我想了解什么是猴子补丁或猴子补丁? 是方法/操作符重载还是委派? 这些东西有什么共同点吗? 问题答案: 不,这与任何事情都不一样。它只是在运行时动态替换属性。 例如,考虑一个具有method的类get_data。该方法进行外部查找(例如,在数据库或Web API上),并且类中的各种其他方法都调用它。但是,在单元测试中,您不希望依赖于外部数据源-因此,您可以用get_data存根(返回一
本文向大家介绍什么是事务?什么是锁?相关面试题,主要包含被问及什么是事务?什么是锁?时的应答技巧和注意事项,需要的朋友参考一下 答:事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。要将有组语句作为事务考虑,就需要通过ACID测试,即原子性,一致性,隔
我在这里读到 写入共享引用类型<代码> 理解<代码> 在另一个地方,我阅读了以下代码: 结构人中的a是什么 名称的含义是什么: 如果想避免使用
我几天前听说了Docker的事,想过去看看。 但事实上,我不知道这个“容器”的用途是什么? 什么是容器? 它能取代一个专门用于开发的虚拟机吗? 简单地说,在公司中使用Docker的目的是什么?主要的优势?
本文向大家介绍什么是batch normalization,原理是什么?相关面试题,主要包含被问及什么是batch normalization,原理是什么?时的应答技巧和注意事项,需要的朋友参考一下 Batch Normalization就是在训练过程,每一层输入加一个标准化处理。 深度神经网络之所以复杂有一个原因就是由于在训练的过程中上一层参数的更新使得每一层的输入一直在改变。所以有个办法就是去
本文向大家介绍什么是pytest?其优点是什么?,包括了什么是pytest?其优点是什么?的使用技巧和注意事项,需要的朋友参考一下 Pytest是python中的测试框架。要安装pytest,我们需要使用命令pip install pytest。安装后,我们可以通过pytest –version命令验证是否已安装python 。pytest的版本应该是已知的。 Pytest可用于创建和执行测试用例