问题标签 [pytest-mock]
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 - 如何使用 PropertyMock 在 pytest 单元测试中返回请求响应属性?
我将pytest-mock 包装器与 pytest 一起使用。
我无法让 PropertyMock 与requests 包一起工作。
这是我尝试进行单元测试的函数示例:
这是我在单元测试中的尝试:
测试失败,因为 200 没有返回response.status_code
。
我尝试在调用后放置一个 PDB 断点requests.get()
,并自己在 PDB 中检查了 response.status_code 属性。我得到一个 MagicMock 对象:
python - 我如何修补方法并返回 pytest 中的传入参数?
我对 pytest 模拟补丁有疑问。我不知道如何修补执行原始 SQL 的方法。
我有获取结果的通用方法。
如何在项目中使用:
在测试用例中,我想从执行器获取原始查询字符串并将其与一些示例进行比较
一般来说,我想在测试用例中从 executor 获取传入的参数
我正在使用 pytest 和 django_db
我怎么能这样做?
python - 不能将 attach_mock 与 autospec 函数模拟一起使用
库模块:
测试模块:
mocker
夹具来自插件pytest-mock
。使用执行MCVEpython -m pytest
。
没有autospec它可以工作。使用 autospec 会破坏该attach_mock
功能吗?应该如何在不丢失它们的 autospec 的情况下对依赖调用的 order和argsfoo
进行assert测试?bar1
bar2
python - 为了单元测试的目的,如何修补 Python 的 raise(或 return)关键字?
mock.patch 能够捕获的 Python 关键字的命名空间是什么?
当有人想打补丁打开或打印然后mock.patch("builtins.open")
或mock.patch("mymodule.open")
可以使用,但这不起作用,例如,使用raise
.
如果我有raise somemodule.SomeException
声明,那么我可以很容易地测试是否引发了异常,但是我如何断言实际上已经调用了 raise 关键字。pytest
喜欢(在和的帮助下pytest-mock
):
编辑:我有一个很好的答案,所以 mock.patch 不适用。除此之外,除了明显的解决方案(测试结果)之外,是否还有其他有意义的技术来测试代码中是否调用了Python 关键字 ( raise
, , ...)?return
编辑 2:我想测试的实际代码(pynput 的 Listener stop() 在 Xfce 中不能正常工作,所以我必须引发异常来停止 Listener 线程):
编辑 3: 上面的方法使用以下两种测试方法进行了单元测试:
python - 来自另一个文件/模块的 Python 模拟补丁
我有一个按预期工作的模拟。
但如果我将我的 second() 方法移动到另一个文件,则不会......
我得到了同样的错误: AssertionError: Expected 'second' to have been called once。调用 0 次。
我在这里想念什么?
我尝试了几种不同的格式化方式,但似乎都没有。在这种情况下,这甚至是单元测试的最佳实践/包吗?
python-3.x - pytest - 在构造函数中模拟构造函数
全部,
我有一堂类似的课。
如何Bar
使用 pytest / pytest-mock 模拟构造函数?我尝试了以下失败。
python - pytest-mock 模拟自我方法
我正在尝试使用 pytest-mock 来模拟 self 方法。
只是我的班级有一个我想模拟的函数“距离”。
我想测试我的eq函数,如下所示:
我尝试这样的事情:
但是这个回报:
AssertionError: assert <\MagicMock spec='Interval' id='140333310434384'> ==<\MagicMock spec='Interval' id='140333310558104'>
我也试过
但这让我得到了一个 AttributeError,正如我对 MagicMock 所期望的那样。
修补我的对象自我方法的正确方法是什么?
python - Pytest 模拟通过 yield 返回的对象并检查该对象的方法是否被调用
我有一段代码需要通过 pytest 进行测试
我需要检查 some_method 是否已被调用。我曾经pytest-mock
模拟 some_generator 方法以返回 aMagicMock
并使用该对象来检查该方法是否被调用。但它返回错误。我分配的返回值也没有反映到some_method
即使gen.some_method(value)
调用了,测试也总是失败。
python - 无法使用 pytest 模拟异常
我似乎无法测试 getopt 异常。这里有一个非常简化的例子(主文件):
我试图引发 GetoptError 异常的测试文件在这里(测试文件):
不幸的是,没有引发异常。测试返回:
谁能指出我错过了什么?谢谢你。
python - pytest-mock 补丁上下文管理器在退出时不恢复对象
我们最近从 unittest 切换到 pytest。我在mocker.patch
用作上下文管理器时遇到了一个奇怪的问题。考虑以下示例。
module_a.py
module_b.py
test_module_b.py
我希望一旦上下文管理器退出,MyClass 的 value 方法方法将被恢复(返回值为 10),但是测试在第二个断言语句上失败并出现断言错误20 != 10
如果我使用完全相同的测试,但替换mocker.patch
为unittest.mock.patch
,它通过。我认为 pytest-mock 与 unittest.mock 共享相同的 API,所以我对为什么会有差异感到困惑。