问题标签 [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 mock和magic mock有什么区别?
python mock和magic mock有什么区别,因为我可以看到
何时使用 mock obj 以及何时使用 MagicMock obj?
python - 如果该方法在另一个方法中被调用了两次,如何在第一次调用时断言调用?
例如在 t.py
然后:
我得到:
python - Python:用单元测试理解magicmock的问题
这是我的课:
这是我的测试:
我试图让上述测试简单地引发异常,InvalidAccount
但我不确定如何模拟self.db.design.view
响应。这就是导致我的测试失败的原因,因为它试图发出真正的呼唤
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 的帮助下,我将代码编辑到这个工作示例中:
python - Python Mock 延迟副作用估值
有什么方法可以延迟模拟副作用的评估。
这里的问题是我试图替换“wheel.make”方法,这样当它在测试中被调用时,mockfunc 被调用,并且设置了一个轮子属性而不是运行通常的方法。
事情是-当我设置side_effect时,mockfunc调用立即发生,橡胶属性设置为soft。在调用方法 wheel.make 之前,我不希望这种情况发生。
python - 在python中断言用json字符串调用的模拟函数
在 python 中编写一些单元测试并使用 MagicMock 模拟一个接受 JSON 字符串作为输入的方法。在我的单元测试中,我想断言它是用给定的参数调用的,但是我遇到了断言语句的问题,因为除了在字符串的断言语句中之外,字典中对象的顺序无关紧要。我在下面尝试实现的简化示例。
由于字典中的键在转储到 json 时的任意顺序,上述可能通过或可能失败,即两者'{"a":"a", "b":"b"}'
都是'{"b":"b", "a":"a"}'
有效的转储,但一个会失败,一个会通过,但是我想编写测试以便要么会通过。
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?
python - 第一次调用后抛出异常
我有一个循环,我处理将记录添加到 zip 文件。我已经模拟了我的 zipfile 对象,我想引发一个异常来验证我处理大型 zipfile 的逻辑是否可以正常工作。
有没有办法使用 MagicMocks 或普通模拟来接受第一个调用,但在第二个调用时引发异常?
python - @mock.patch 即使在设置 side_effect 之后也不会引发属性错误
我正在尝试修复 python 包 caniusepython3 中的一个错误,该错误是因为 distlib 没有正确解析 pypi 项目而出现的。我已经写了这个单元测试
因此,当 distlib 在下一版本的 distlib 中修复错误时,测试用例仍然有效。
问题是 MagicMock 从未像我预期的那样引发 AttributeError 而是返回魔术模拟对象的字符串表示形式
并在稍后导致此堆栈跟踪,因为它返回对象 repr,
为什么 MagicMock 在被调用时不返回异常distlib.locator.locate()
?
更新:当我切换到使用时,我能够让这个单元测试工作
但我仍然想知道我在装饰器格式上做错了什么。
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 顺序应该无关紧要,即使我按照测试断言的顺序进行排序,测试仍然失败。