问题标签 [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 回答
2832 浏览

python - python mock和magic mock有什么区别?

python mock和magic mock有什么区别,因为我可以看到

何时使用 mock obj 以及何时使用 MagicMock obj?

0 投票
1 回答
1762 浏览

python - 如果该方法在另一个方法中被调用了两次,如何在第一次调用时断言调用?

例如在 t.py

然后:

我得到:

0 投票
1 回答
85 浏览

python - Python:用单元测试理解magicmock的问题

这是我的课:

这是我的测试:

我试图让上述测试简单地引发异常,InvalidAccount但我不确定如何模拟self.db.design.view响应。这就是导致我的测试失败的原因,因为它试图发出真正的呼唤

0 投票
0 回答
263 浏览

python - 用 Python 类方法替换模拟方法

我有一个与此处发布的问题类似的问题,但也没有令人满意的答案:
mocking a method with another reusable method with arguments in python
Using mock patch to mock an instance method

我有以下 Production 类和 UnitTest 类。在 UnitTest 类的第二个测试用例中,我想用真实方法替换我在 Unit Test 类上面定义的假方法。但是,我无法将even_numbers被测系统中的方法连接到假方法odd_numbers,包括其输入参数。这个替代品应该是什么样子?我正在使用 Python 2.7。

编辑:在下面的 Martijn 的帮助下,我将代码编辑到这个工作示例中:

0 投票
1 回答
1389 浏览

python - Python Mock 延迟副作用估值

有什么方法可以延迟模拟副作用的评估。

这里的问题是我试图替换“wheel.make”方法,这样当它在测试中被调用时,mockfunc 被调用,并且设置了一个轮子属性而不是运行通常的方法。

事情是-当我设置side_effect时,mockfunc调用立即发生,橡胶属性设置为soft。在调用方法 wheel.make 之前,我不希望这种情况发生。

0 投票
1 回答
3006 浏览

python - 在python中断言用json字符串调用的模拟函数

在 python 中编写一些单元测试并使用 MagicMock 模拟一个接受 JSON 字符串作为输入的方法。在我的单元测试中,我想断言它是用给定的参数调用的,但是我遇到了断言语句的问题,因为除了在字符串的断言语句中之外,字典中对象的顺序无关紧要。我在下面尝试实现的简化示例。

由于字典中的键在转储到 json 时的任意顺序,上述可能通过或可能失败,即两者'{"a":"a", "b":"b"}'都是'{"b":"b", "a":"a"}'有效的转储,但一个会失败,一个会通过,但是我想编写测试以便要么会通过。

0 投票
1 回答
322 浏览

python - Mocking and patching keystoneclient in Python unittest

I am writing unittest for a class looks like below. I am trying to assert if logging is properly called with patch keystoneclient. The class looks like below. Problem is, I cannot pass through the for statement and can never get to LOGGER.warning or LOGGER.info even after patching CredentialManager. I am new to whole unittest and Mock so I might not be understanding something clearly.

My unit tests looks something like this,

The error I am getting looks like this.

So even after patching CredentialManager with autospect, I am getting error on abc.list(). I need to get to the point where I can test LOGGER but it seems like this patching does not work for list(). How should I make this error go away and be able to pass through the for statment so I can assert on logging?

0 投票
2 回答
4671 浏览

python - 第一次调用后抛出异常

我有一个循环,我处理将记录添加到 zip 文件。我已经模拟了我的 zipfile 对象,我想引发一个异常来验证我处理大型 zipfile 的逻辑是否可以正常工作。

有没有办法使用 MagicMocks 或普通模拟来接受第一个调用,但在第二个调用时引发异常?

0 投票
1 回答
1001 浏览

python - @mock.patch 即使在设置 side_effect 之后也不会引发属性错误

我正在尝试修复 python 包 caniusepython3 中的一个错误,该错误是因为 distlib 没有正确解析 pypi 项目而出现的。我已经写了这个单元测试

因此,当 distlib 在下一版本的 distlib 中修复错误时,测试用例仍然有效。

问题是 MagicMock 从未像我预期的那样引发 AttributeError 而是返回魔术模拟对象的字符串表示形式

并在稍后导致此堆栈跟踪,因为它返回对象 repr,

为什么 MagicMock 在被调用时不返回异常distlib.locator.locate()

更新:当我切换到使用时,我能够让这个单元测试工作

但我仍然想知道我在装饰器格式上做错了什么。

0 投票
1 回答
186 浏览

python - 为什么在 MagicMock 断言中的 Kwarg 参数中 Order 很重要?

我有一个测试,我在其中嘲笑经理的过滤器调用。断言看起来像这样:

并且正在测试的代码如下所示:

我认为,由于这些是 kwargs,因此顺序无关紧要,但测试失败了,即使每对的值都匹配。以下是我看到的错误:

AssertionError: 预期调用:filter(type_id__in=[3, 4, 5, 6], parent_transaction__date_posted=datetime.datetime(2015, 5, 29, 16, 22, 59, 532772), finance=) 实际调用:filter(type_id__in= [3, 4, 5, 6], 财务=, parent_transaction__date_posted__lte=datetime.datetime(2015, 5, 29, 16, 22, 59, 532772))

到底他妈发生了什么?kwarg 顺序应该无关紧要,即使我按照测试断言的顺序进行排序,测试仍然失败。