我正在尝试Mock
使用python模拟模块的函数(返回一些外部内容)。
我在导入模块的模拟函数时遇到了一些麻烦。
例如,在util.py
我有
def get_content():
return "stuff"
我想嘲笑,util.get_content
以便它返回其他内容。
我正在尝试:
util.get_content=Mock(return_value="mocked stuff")
如果get_content
在另一个模块中被调用,它实际上似乎永远不会返回模拟对象。我在使用方法方面缺少什么Mock
吗?
请注意,如果我调用以下内容,则一切正常:
>>> util.get_content=Mock(return_value="mocked stuff")
>>> util.get_content()
"mocked stuff"
但是,如果get_content
从另一个模块内部调用,它将调用原始函数而不是模拟版本:
>>> from mymodule import MyObj
>>> util.get_content=Mock(return_value="mocked stuff")
>>> m=MyObj()
>>> m.func()
"stuff"
内容 mymodule.py
from util import get_content
class MyObj:
def func():
get_content()
所以我想我的问题是-如何从我调用的模块内部调用函数的模拟版本?
看来,这from module import function
可能归咎于它,因为它没有指向Mocked函数。
我认为我有一个解决方法,尽管在如何解决一般情况上还不太清楚
在中mymodule
,如果我替换
from util import get_content
class MyObj:
def func():
get_content()
与
import util
class MyObj:
def func():
util.get_content()
本Mock
似乎被调用。看起来名称空间需要匹配(这很有意义)。但是,奇怪的是我希望
import mymodule
mymodule.get_content = mock.Mock(return_value="mocked stuff")
在使用from /
import语法(现在可以get_content
插入mymodule
)的原始情况下实现技巧。但这仍然是指未经嘲弄的get_content
。
事实证明,名称空间很重要-编写代码时只需记住这一点。
问题内容: 我正在通过编写一个小型个人项目来学习Go。即使很小,我还是决定从头开始进行严格的单元测试,以学习Go的良好习惯。 琐碎的单元测试都很好而且花哨的,但是我现在对依赖项感到困惑;我希望能够用模拟函数替换一些函数调用。这是我的代码片段: 我希望能够测试downloader()而不实际通过http获取页面- 即通过模拟get_page(更容易使用,因为它仅将页面内容作为字符串返回)或http.
问题内容: 首先,我是和的新手。 我有一个实例化的类,我想测试一下。 这是我的代码: 我想测试一下我的功能。我的头,我认为测试fs.existsSync的状态是个好主意。如果返回,则必须调用。所以我尝试写一些测试: 但是,我有一个错误: 您能帮我调试和测试我的功能吗? 问候。 问题答案: 出现错误是因为它正在寻找在您的对象上调用的方法,该方法不存在。如果您可以访问测试中的模块,则可以监视如下方法:
本文向大家介绍Vue使用json-server进行后端数据模拟功能,包括了Vue使用json-server进行后端数据模拟功能的使用技巧和注意事项,需要的朋友参考一下 正开发过程中 前后端分离或者不分离 ,接口多半是之后与页面的开发 ,所以建立rest的APL的接口 给前端提供虚拟的数据是非常必要的 所以这里我使用了json-server作为工具,支持CORS和JSONP跨域请求,支持GET, P
本文向大家介绍使用JavaScrip模拟实现仿京东搜索框功能,包括了使用JavaScrip模拟实现仿京东搜索框功能的使用技巧和注意事项,需要的朋友参考一下 使用js模拟实现京东的搜索框,主要用了js中的onfocus(注册焦点事件),onblur(失去焦点的事件); 主要实现了: 在鼠标点进去的时候,里面的默认内容消失; 在输入之后,再点击搜索框外,输入的内容还在搜索框中; 如果输入为空,点击搜索
出于学校目的,我正在创建一个使用股票API的应用程序。 我正在尝试为一种获取过去10年所有股票数据的方法编写一个测试。我不想实际获取所有这些数据,而是想抛出一个异常。 我想测试的方法: 股票时间系列(....)调用可以抛出阿尔法仓位异常。 我这样嘲弄了TimeSeries类: 在我的测试类中,我想模拟这个调用,并返回一个异常而不是实际数据。 无论我多么试图嘲笑这段代码,它永远不会抛出异常。它将始终
问题内容: 我正在尝试使用富有想象力的Mock测试库测试Django应用程序时模拟某些东西。我似乎无法完全正常工作,我正在尝试这样做: 我究竟做错了什么? 问题答案: 啊,我对在哪里应用该补丁装饰感到困惑。固定: