问题标签 [magicmock]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 单元测试中的Python模拟数据库连接/未知类型
新手到 python 这里。我的类使用数据库连接来包装一些函数。我已经成功地想出了一些基本的例子。对于我正在使用的更复杂的库,我找不到模拟数据库连接的密切示例。在我的,
其中 db_con 是一个 teradata。UdaExec 返回一个连接
因此,为了让我的测试不使用任何真正的连接,我必须模拟一些事情。我试过这个组合:
但我的结果搞砸了,因为 fetchone 返回的是一个模拟,而不是我期待的 [500] 一个项目列表:
我发现了一些示例,其中有一个用于测试操作系统操作的“with 块”,但没有与数据库有关。另外,我不知道 db_con.cursor 是什么数据类型,所以我无法准确指定 - 我认为光标位于Teradata/PyTd的 UdaExecConnection.cursor() 中。
我需要知道如何模拟允许我测试我的方法中的逻辑的响应。
python - 无法使用 unittest.patch 模拟导入语句
我在函数中有一个导入语句,我想使用补丁模拟该导入语句,但不能。
得到
python - 魔术模拟 assert_called_once 与 assert_called_once_with 奇怪的行为
我注意到 python 的一个奇怪的assert_called_once
行为assert_called_once_with
。这是我真正简单的测试:
文件模块/a.py
文件模块/b.py
这些是我的测试:
如函数名称所述,我的问题是:
- 测试 1 正确通过
- 测试 2 正确通过
- 测试 3 正确失败(我已删除对 b 的调用)
- 测试 4 通过我不知道为什么。
难道我做错了什么?我不确定,但阅读文档文档 python:
assert_call_once(*args, **kwargs)
断言模拟只被调用了一次。
python - Python 的魔术模拟没有按预期工作。实际函数被调用
我有一个模型:
说,我有另一个使用它的功能:
现在,当我为filter_graded
方法编写测试时,我模拟is_completely_graded
某些实例返回真/假。测试不尊重模拟,而是调用实际is_completely_graded
。我该如何解决这个问题?
我的测试看起来像:
python - 当鼻子测试发现测试时,Magic Mock 失败
我正在使用 MagicMock 测试 Web 应用程序中的功能。该函数是直接从模块导入的。
预期的行为是:当调用被测试的函数时,它会调用第三方 api(但我在为我的测试模拟这个)。这将返回一个字典,并且被测函数将其插入到一个对象中并返回该对象。
当我使用nosetests 运行特定的测试模块时,效果很好。
当我使用鼻子测试在我的test/unit/
文件夹中发现和运行测试时,测试没有按预期工作。取而代之的是,模拟 API 返回 aNoneType
并且被测试的函数返回一个 Magic Mock 实例。
考试:
正在测试的功能(在user_service
模块中):
你能帮我理解为什么结果不一致吗?
编辑
新信息 - 如果我直接在模块上使用鼻子测试,我正在测试的函数会以 unicode 的形式访问模拟的 Facepy 字典值(如预期的那样)。如果我使用nosetests 来发现测试,或者如果我使用下面dm03514 发布的解决方案并直接运行测试,则该函数会从模拟的facepy API 作为Magic Mock 实例访问字典。意思是,访问 dict 的每个结果都是一个 Magic Mock 实例。
这很令人困惑,因为我将 return_value(在所有测试中)设置为字典。
python - MagicMock 和 wrap
为什么 MagicMock 对象的“wraps”关键字不能始终如一地工作?普通方法被传递给被包装的对象,但不是“特殊”方法。在下面的测试中,第一个断言通过,第二个失败。
我在文档中找不到任何暗示这一点的东西。我错过了什么吗?
python - 如何模拟属性以引发异常?
我正在使用带有 Python 2.7 的 MagicMock 来模拟对象。我正在模拟的其中一个类具有属性,其中一个TypeError
在某些情况下可以引发 a。
我想嘲笑这种行为,但我不知道如何:
del my_mock.my_property
将导致AttributeError
ifmy_property
被访问,但我需要一个TypeError
.my_mock.my_property = MagicMock(side_effect=TypeError)
导致TypeError
whenmy_property
is called,但不是仅在访问时。
我该怎么做?
python - 无论在哪里使用,如何在 python 中使用补丁来模拟 python 库?
在以下问题中,使用 ftplib 的函数在同一个文件中定义,这使得修补 ('ftplib.FTP') 变得很简单
模拟 ftplib.FTP 以对 Python 代码进行单元测试
我的问题是:如果在我的测试中,我想创建一个在某处使用 ftplib 的类的实例(我们称之为“A”)(即:A 类有 B 类的实例),我应该如何进行B 有一个调用 connect()) 的 FTP 对象?
如果我使用另一个问题中给出的解决方案,我发现调用的是 ftplib 而不是 mock。我怎么知道 ftplib.FTP 的正确路径?
python - 如何修补从python中的实例调用的方法
我正在尝试为我的文件abc.py编写一个单元测试。我无法为从类实例调用的方法设置返回值。
这是我的文件:
abc.py
这是测试文件
测试.py
收到以下错误:
python - Python magicmock 导致“NoneType”对象没有属性“注销”
我正在尝试使用我编写的自定义模拟来修补函数调用
内部方法有这段代码
但是,当我运行它时,它会返回一个属性错误
“NoneType”对象没有属性“注销”
我猜return_value
设置为 NoneType 但我认为这subscriberMock.return_value.unregister.return_value
会覆盖它
更多信息:
如果我打印self.subscribers[topic]
它返回None
。然后它运行副作用。为什么应该self.subscribers[topic] = None
假设我有一个参数的返回值。