问题标签 [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.

0 投票
1 回答
1447 浏览

python - 如何在 Python 中对复制的 MagicMock 调用方法?

我想测试一个函数是否__copy__在传递给它的对象上调用了该方法(使用给定的一组参数)。

由于创建对象需要数据库连接,我想我应该模拟它并将模拟传递给函数进行测试。

但是,它似乎__copy__正在返回一个不允许在其上调用任意方法的模拟(不确定是 Mock 还是 MagicMock)实例。由于我的代码在新对象上调用方法,因此它返回以下错误。

我怎样才能断言该__copy__方法已被调用并且仍然让函数的其余部分运行而没有错误?

FWIW,我尝试分配old_obj.__class__.return_value = MagicMock(),但似乎它没有返回我分配给它的内容(即我也分配... = 'foo'了但它仍然返回了一个模拟对象)。

例子:

py.test 产生的错误:

0 投票
1 回答
417 浏览

python - 每次实例化类时,如何模拟 Python 类以返回唯一的 autospec Mock 实例?

我正在编写一个创建subprocess.Popen管道的程序。我正在尝试模拟subprocess.Popen,以便每个调用都返回一个不同的MagicMock,以便我可以确保在管道中的特定(或所有)进程上调用方法。

我也希望这个模拟基于自动规范,subprocess.Popen但不断收到一个错误,我不能基于模拟自动规范。

目前我的代码如下:

0 投票
2 回答
1198 浏览

python - 调用随机方法时,MagicMock 如何避免抛出 AttributeError?

在 Python 中,如果你调用一个不存在的方法,它会抛出一个 AttributeError。前任

在下面的代码中,MagicMock 类没有名为 hello 的函数,或者没有为方法 hello 创建补丁。仍然下面的代码不会抛出 AttributeError

MagicMock 是如何做到这一点的?当调用任何方法(可能未定义)时,如何创建一个可以执行操作的类?

0 投票
1 回答
374 浏览

python - Python 单元测试 - 运行时的模拟补丁?

我正在用 python 编写单元测试。

我的代码redis经常使用,我想模拟一下。我想在全局范围内执行此操作,而不必担心在每次测试中都对其进行模拟,但我认为使用@patch装饰器是不可能的。

工作测试示例-

我实际上并不需要模拟缓存中的内容,我只是想防止需要清理其他进程正在使用的实际 redis 缓存。我尝试在setUp-

错误:setUp() 接受 2 个位置参数,但给出了 3 个

除了修补每个测试之外,是否可以在没有装饰器的情况下使用设置?像这样的东西?-

0 投票
2 回答
3246 浏览

python - Python MagicMock assert_called_once_with 不考虑参数?

我正在设置一个 MagicMock 实例,使用不同的参数调用相同的方法两次,并将我的断言设置为仅验证一组参数。

蟒蛇:3.5.2

我希望这会通过。为什么它忽略这些论点?

0 投票
1 回答
112 浏览

python - MagicMocking 熊猫 DataFrame 会导致段错误

以下代码产生分段错误。

我天真地以为这会奏效。这是模拟 DataFrame 的正确方法吗?

0 投票
0 回答
399 浏览

python-3.x - pytest 用 boto3 模拟

只是在一般情况下学习 python 模拟并努力使用 Magicmock 和 pytest 和 boto3。

这是我的代码块

这是不起作用的测试:

返回的错误:E AssertionError: Expected 'upload_file' to have been called。

谢谢!

0 投票
2 回答
2400 浏览

python - 如何让 MagicMock 返回多个值

我正在尝试模拟一个库(matplotlib为了它的价值),并且遇到了一个问题,即当调用模拟并期望返回一个元组时它会失败。有一个更好的方法吗?

这是收到的错误消息:

0 投票
0 回答
843 浏览

pyspark - 使用 MagicMock 修补 PySpark 中的函数不会在 spark 运行中修补

我有一个运行我的PySpark测试的单元测试(使用PyTest ) 。我有正常的创建SQLContext。我想在所有情况下都得到相同的 uuid4,所以我在测试中修补了 uuid4。如果我从测试函数调用,一切都很好。conftest.pyuuid.uuid4()

但是,当我运行也调用 uuid4 的 PySpark 作业时,它没有被修补:

我的 PySpark 函数(简化):

我的测试如下所示:

得到正确的good_uuid值 - '1-1-1-1',another_good_uuid但数据帧的 udf 版本的函数仍然调用未修补的 uuid4。

这里有什么问题?它是udf()函数正在做的事情吗?谢谢!

0 投票
1 回答
703 浏览

python - 如何在python3中模拟文件对象

在python2中,我的测试方法中有这个:

我正在迁移到 python3,但我不知道如何进行类似的模拟。我试过了:

我错过了什么?