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

0 投票
1 回答
550 浏览

python-3.x - Python:使用 Click 模拟 AWS

我有一个 click cli 应用程序,我正在尝试模拟 AWS SSM Parameter Store,但 runner.invoke 没有返回预期结果。

这是test_demo.py

测试结果如下:

我希望 cli 的输出与无 cli 相同。

点击代码:

manage_secrets 代码:

我添加了一个返回值,它只是默认值,而不是解析,我认为 ssm.get_parameter 是一样的。我不确定我错过了什么。任何指示或建议?

0 投票
1 回答
474 浏览

python-3.x - 通过模拟获取应用的函数输入数据框

我有以下功能

在我的测试中,我想查看在所有链接操作之后构建的数据框,并在调用之前检查它是否一切正常do_something_with_each_row。最后一个函数不返回数据帧(它只是迭代所有行,类似于iterrow)。

我试图模拟这样的apply函数:

但在这种情况下,我无法访问输入apply以测试其内容的数据框。

我还尝试模拟do_something_with_each_row

但是这次我有所有带有行参数的调用,但它们都有None值。

如何获取apply调用函数的数据帧并检查它是否确实与以下内容相同:

我正在使用0.24.2pandas 版本,升级到 pandas1.0.5并不会改变此事。

我尝试在熊猫问题中进行搜索,但没有找到有关此主题的任何内容。

0 投票
1 回答
328 浏览

python - 在 pytest-mock 中模拟线程调用

我有一个简单的代码库,如下所示:

第一次start调用函数时,线程将运行,而下一次调用它时不会因为设置了 flag(_run_thread)。

代码本身运行得很好。

但是,当我尝试对此代码运行测试时,它无法按预期工作。下面是我的测试代码:

因此,由于我实际上不希望循环,因此我只想模拟该counter函数,然后在其中设置标志,以便实际线程不会运行。

我看到以下错误。

我不知道我哪里出错了。任何线索,我将不胜感激。

0 投票
2 回答
7991 浏览

python - 如何使用 pytest-mock 指定模拟函数的返回值?

下面打印False。这不是嘲笑的方式吗?

我尝试更改函数的路径,但它出错了,所以路径似乎是正确的。我错过了什么?

0 投票
1 回答
107 浏览

python - 模拟类的补丁属性

我正在尝试模拟一堂课。

我试图模拟的类如下所示(为简洁起见,已删除行):

如您所见,它有一个名为 的属性clients

我的测试方法:

我的单元测试如下所示:

问题是......我如何clients在我的测试中设置属性,因为被测方法需要设置它?(我可以将它设置为None,但我只需要能够设置它。)

使用当前代码,我的应用程序返回错误:

谢谢!

0 投票
1 回答
556 浏览

python-3.x - 在 pytest 中模拟和验证类方法的参数

我正在尝试在我的 pytests 中使用 pytest-mock。

如何在同一个测试中模拟一个对象方法并验证该对象方法的参数?

在我的示例中,我想模拟类 Engine 中的方法“test_function”。我想检查一次使用预期参数调用方法“test_function”。

我目前使用 monkeypatch 和 mocker.patch.object 的方法很复杂,而且不起作用。当 mocker.patch.object 处于活动状态时,不会调用 mock_function。

此外,是否也可以使用类对象测试“assert_called_one_with”?

0 投票
1 回答
36 浏览

python - 如何检查是否使用预期的对象调用方法

如何在 pytest-mock 中测试方法是否已使用相应的对象调用?

我的对象如下:

我的测试如下:

目前我收到错误消息:

pytest 似乎检查两个对象是否具有相同的地址。我只想检查两个对象是否具有相同的参数。我怎样才能检查这个?

0 投票
0 回答
110 浏览

python - 如何使用 pytest 模拟在 __init__ 方法下初始化的对象

我一直在试图弄清楚如何为我在类的init方法中初始化的对象创建一个模拟。我一直在使用 pytest 和 mockito 来尝试做同样的事情,但运气最差。

我在这里有两个问题:

  1. 如何初始化我在init方法中定义的对象
  2. 如果对象是boto3客户端,将模拟工作,这是最有效的方式

我试图模拟的代码如下所示:

../胶水.py

有人可以帮忙吗?

0 投票
1 回答
2979 浏览

python - Python pytest 模拟失败,函数调用断言为“assert None”

我正在尝试模拟对 boto3 的一些调用,看起来被模拟的函数正在返回正确的值,并且看起来如果我更改断言使其不再匹配断言中传递的内容失败,因为输入参数不匹配,但是,如果我使它们匹配,则断言失败并显示:

dynamo DB 对象是一个全局变量。

我的单元测试看起来像:

如果我更改 的预期值,我无法弄清楚出了什么问题,assert_called_with例如:

测试失败:

因此,当预期输入和实际输入不同时,它会因此而失败,但是当它们相同并且测试应该通过时,它就会失败,因为就好像该函数甚至从未被调用过。

0 投票
1 回答
442 浏览

python - 如何在 python 中使用 pytest 和 mocks 为使用 http 客户端库的函数创建单元测试?

如何使用 pytest 模拟测试以下函数?

通过使用 pytest_mock 库并参考此处的代码,我能够对get_response()用于执行某些操作的其他函数进行单元测试。因此,如果我们甚至需要使用 pytest_mock 库来执行单元测试,那就没问题了get_response

话虽如此,到目前为止我所看到的解决方案都是针对requests&unittest库的

我想避免创建一个 http 服务器或烧瓶服务器这个基于模拟的单元测试。

Pytest 文档 似乎建议我需要一个补丁来进行http.client.HTTPSConnection单元测试conn.request()。是这样吗?conn.getresponse()get_response()

一个最小的工作示例会有所帮助。提前致谢!